annotate arrows/@arrf/construct.m @ 61:eff6bddf82e3
tip
Finally implemented perceptual brightness thing.
author |
samer |
date |
Sun, 11 Oct 2015 10:20:42 +0100 |
parents |
672052bd81f8 |
children |
|
rev |
line source |
samer@0
|
1 function u=construct(s,sizes_in)
|
samer@0
|
2 u=mkunit(s);
|
samer@0
|
3 fn=s.fn(sizes_in);
|
samer@0
|
4 if isempty(s.sizefn)
|
samer@0
|
5 u.sizes_out=guess_sizes(fn,sizes_in,nargout(s));
|
samer@0
|
6 else
|
samer@0
|
7 u.sizes_out=s.sizefn(sizes_in);
|
samer@0
|
8 end
|
samer@0
|
9 u.process=mkproc(fn,nargin(s),nargout(s));
|
samer@0
|
10
|
samer@0
|
11 end
|
samer@0
|
12
|
samer@0
|
13 function f=mkproc(fn,nin,nout);
|
samer@0
|
14 if nout==0, f = @proc_n0;
|
samer@0
|
15 elseif nin==0, f = @proc_0n;
|
samer@0
|
16 elseif nin==1 && nout==1, f=@proc_11;
|
samer@0
|
17 else f=@proc_nn; end
|
samer@0
|
18
|
samer@0
|
19 function proc_n0(varargin), fn(varargin{1:nin}); end
|
samer@0
|
20 function out=proc_11(in), out=fn(in); end
|
samer@0
|
21 function varargout=proc_0n, [varargout{1:nout}]=fn(); end
|
samer@0
|
22 function varargout=proc_nn(varargin),
|
samer@0
|
23 [varargout{1:nout}]=fn(varargin{1:nin});
|
samer@0
|
24 end
|
samer@0
|
25 end
|
samer@0
|
26
|
samer@0
|
27 function sz_out=guess_sizes(fn,sz_in,nout)
|
samer@0
|
28 ins = map(@zeros,sz_in);
|
samer@0
|
29 [outs{1:nout}] = fn(ins{:});
|
samer@0
|
30 sz_out = map(@size,outs);
|
samer@0
|
31 end
|
samer@0
|
32
|