GETARGS parse variable argument list into a struct S = GETARGS(defaultS, varglist) varglist - a cell array of name, value pairs defaultS - struct containing the default values Example: function foo(par1, varargin); args = struct( 'param1', 0, 'param2', eye(3) ); args = getargs( args, varargin ); disp(args.param1); foo(2, 'param1', 14) will print 14 Author: Pekka Paalanen <paalanen@lut.fi> $name$ $Id: getargs.m,v 1.1 2004/11/02 08:32:22 paalanen Exp $
0001 %GETARGS parse variable argument list into a struct 0002 % 0003 % S = GETARGS(defaultS, varglist) 0004 % 0005 % varglist - a cell array of name, value pairs 0006 % defaultS - struct containing the default values 0007 % 0008 % Example: 0009 % function foo(par1, varargin); 0010 % args = struct( 'param1', 0, 'param2', eye(3) ); 0011 % args = getargs( args, varargin ); 0012 % disp(args.param1); 0013 % 0014 % foo(2, 'param1', 14) will print 14 0015 % 0016 % Author: 0017 % Pekka Paalanen <paalanen@lut.fi> 0018 % 0019 % $name$ 0020 % $Id: getargs.m,v 1.1 2004/11/02 08:32:22 paalanen Exp $ 0021 0022 function S = getargs(defaultS, varglist); 0023 0024 if mod(length(varglist),2) ~=0 0025 error('Odd number of variable parameters'); 0026 end 0027 0028 S = defaultS; 0029 i=1; 0030 while i <= length(varglist) 0031 if isfield(S, varglist{i}) 0032 % for Matlab R12 0033 %S = setfield(S, varglist{i}, varglist{i+1}); 0034 0035 % for Matlab R13 and above 0036 S.(varglist{i}) = varglist{i+1}; 0037 else 0038 warning_wrap('getargs:unknown_param', ... 0039 ['Unknown parameter "' varglist{i} '"']); 0040 end 0041 i = i+2; 0042 end