Aufgabe 2.4 – Parameter-Struktur getpars()

 

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