samer@37: % options - create name-value map as a structure samer@37: % samer@37: % Arguments can be name value pairs, eg samer@37: % opts=options('foo',5,'bar',7) samer@37: % opts.foo=4 samer@37: % opts.bar=7 samer@37: % samer@37: % Or structures samer@37: % opts=options(defopts,'foo',5) samer@37: % samer@37: % Later arguments override earlier ones. A typical usage is samer@37: % with variable argument lists and GETPARAM, eg samer@37: % samer@37: % function somefun(a,b,varargin) samer@37: % ... samer@37: % opts=options('foo',5,varargin{:}); samer@37: % fooness=opts.foo; samer@37: % barness=getparam(opts,'bar',12); samer@37: % samer@37: % See also: GETPARAM, GETFIELD, ISFIELD samer@37: function P=options(varargin) samer@37: samer@37: P=struct; samer@37: n=1; samer@37: while n<=length(varargin) samer@37: arg=varargin{n}; samer@37: if isstruct(arg) samer@37: P=cpfields(fieldnames(arg),arg,P); samer@37: elseif iscell(arg) samer@37: pairs=arg; samer@37: for k=1:length(pairs) samer@37: P=setfield(P,pairs{k}{1},pairs{k}{2}); samer@37: end samer@37: else samer@37: P=setfield(P,varargin{n},varargin{n+1}); samer@37: n=n+1; samer@37: end samer@37: n=n+1; samer@37: end samer@37: