annotate general/options.m @ 61:eff6bddf82e3
tip
Finally implemented perceptual brightness thing.
author |
samer |
date |
Sun, 11 Oct 2015 10:20:42 +0100 |
parents |
beb8a3f4a345 |
children |
|
rev |
line source |
samer@37
|
1 % options - create name-value map as a structure
|
samer@37
|
2 %
|
samer@37
|
3 % Arguments can be name value pairs, eg
|
samer@37
|
4 % opts=options('foo',5,'bar',7)
|
samer@37
|
5 % opts.foo=4
|
samer@37
|
6 % opts.bar=7
|
samer@37
|
7 %
|
samer@37
|
8 % Or structures
|
samer@37
|
9 % opts=options(defopts,'foo',5)
|
samer@37
|
10 %
|
samer@37
|
11 % Later arguments override earlier ones. A typical usage is
|
samer@37
|
12 % with variable argument lists and GETPARAM, eg
|
samer@37
|
13 %
|
samer@37
|
14 % function somefun(a,b,varargin)
|
samer@37
|
15 % ...
|
samer@37
|
16 % opts=options('foo',5,varargin{:});
|
samer@37
|
17 % fooness=opts.foo;
|
samer@37
|
18 % barness=getparam(opts,'bar',12);
|
samer@37
|
19 %
|
samer@37
|
20 % See also: GETPARAM, GETFIELD, ISFIELD
|
samer@37
|
21 function P=options(varargin)
|
samer@37
|
22
|
samer@37
|
23 P=struct;
|
samer@37
|
24 n=1;
|
samer@37
|
25 while n<=length(varargin)
|
samer@37
|
26 arg=varargin{n};
|
samer@37
|
27 if isstruct(arg)
|
samer@37
|
28 P=cpfields(fieldnames(arg),arg,P);
|
samer@37
|
29 elseif iscell(arg)
|
samer@37
|
30 pairs=arg;
|
samer@37
|
31 for k=1:length(pairs)
|
samer@37
|
32 P=setfield(P,pairs{k}{1},pairs{k}{2});
|
samer@37
|
33 end
|
samer@37
|
34 else
|
samer@37
|
35 P=setfield(P,varargin{n},varargin{n+1});
|
samer@37
|
36 n=n+1;
|
samer@37
|
37 end
|
samer@37
|
38 n=n+1;
|
samer@37
|
39 end
|
samer@37
|
40
|