Zur Konfiguration eines Signalverarbeitungsalgorithmus soll die folgende Parameterstruktur P verwendet werden:
P = {window:100; threshold:0.0500; type:’blackman’; position:[0 0 1 1]}
Schreiben Sie eine Funktion P=getpars(), die eine geeignete Struktur P erzeugt und mit den angegebenen Defaultwerten belegt. Werden andere Werte für die einzelnen Felder gewünscht, sollen diese über Property/Value Kombinationen an die Funktion übergeben werden können.
Mögliche Aufrufe sind z.B.
>> P=getpars;
>> p=getpars(‘type’,'Bartlett’,'window’,20);
Lösung
function P=getpars(varargin)
opar={'window','threshold','type','position'};
% set defaults
P.window=100;
P.threshold=0.05;
P.type='blackman';
P.position=[0 0 1 1];
% check argument list, must be even
if mod(length(varargin),2)
error('inconsistent number of property/value combinations!')
end
% get values for each property
for i=1:2:length(varargin)
if ~ischar(varargin{i})
error('property must be specified as a string!')
end
if ~any(strcmpi(varargin{i},opar))
error(['invalid property ' varargin{i}])
end
eval(['P.' lower(varargin{i}) '=varargin{i+1};'])
end
end


