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