annotate arrows/@loop1/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 nout=nargout(s);
|
samer@0
|
4
|
samer@0
|
5 [fn,state]=s.init(sizes_in{:});
|
samer@0
|
6 u.sizes_out = guess_sizes(fn,nout,sizes_in,state);
|
samer@0
|
7 u.get_state = @get_state;
|
samer@0
|
8 u.set_state = @set_state;
|
samer@0
|
9 u.process = ifx(nout>0,@proc,@proc0);
|
samer@0
|
10
|
samer@0
|
11 function s=get_state, s=state; end
|
samer@0
|
12 function set_state(s), state=s; end
|
samer@0
|
13 function varargout=proc(varargin)
|
samer@0
|
14 [varargout{1:nout},state]=fn(varargin{:},state);
|
samer@0
|
15 end
|
samer@0
|
16 function varargout=proc0(varargin)
|
samer@0
|
17 state=fn(varargin{:},state);
|
samer@0
|
18 end
|
samer@0
|
19 end
|
samer@0
|
20
|
samer@0
|
21 function sz_out=guess_sizes(fn,nout,sz_in,st)
|
samer@0
|
22 ins = map(@zeros,sz_in);
|
samer@0
|
23 if nout==0, s1=fn(ins{1},st); outs={};
|
samer@0
|
24 else [outs{1:nout},s1] = fn(ins{:},st); end
|
samer@0
|
25 sz_out = map(@size,outs);
|
samer@0
|
26 end
|
samer@0
|
27
|