annotate arrows/@erate/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
|
samer@0
|
3 nin=nargin(s.base);
|
samer@0
|
4
|
samer@0
|
5 u=construct(s.base,s.sizes_in(1:nin));
|
samer@0
|
6 u.sizes_out = [u.sizes_out]; % !!! this is wrong. need better type system
|
samer@0
|
7 u.process = mkproc(u.process,nin,nargout(s.base));
|
samer@0
|
8 end
|
samer@0
|
9
|
samer@0
|
10 function f=mkproc(g,nin,nout)
|
samer@0
|
11 empty={{}};
|
samer@0
|
12 f=@proc;
|
samer@0
|
13 if nin==1 && nout==1, f=@proc_11;
|
samer@0
|
14 elseif nin==1 && nout==0, f=@proc_10;
|
samer@0
|
15 else, f=@proc_nn; end
|
samer@0
|
16
|
samer@0
|
17 function proc_10(x1),
|
samer@0
|
18 if ~isempty(x1), g(x1{1}); end;
|
samer@0
|
19 end
|
samer@0
|
20 function y1=proc_11(x1,x), if isempty(x1), y1={}; else y1={g(x1{1})}; end; end
|
samer@0
|
21
|
samer@0
|
22 function varargout=proc_nn(varargin)
|
samer@0
|
23 if any(cellfun(@isempty,varargin)), varargout=repmat(empty,1,nout);
|
samer@0
|
24 else
|
samer@0
|
25 ins=cellfun(@unbox,varargin(1:nin));
|
samer@0
|
26 [outs{1:nout}]=g(ins{:});
|
samer@0
|
27 varargout=cellfun(@box,outs);
|
samer@0
|
28 end
|
samer@0
|
29 end
|
samer@0
|
30 function x=unbox(y), x=y{1}; end
|
samer@0
|
31 function y=box(x), y={x}; end
|
samer@0
|
32 end
|
samer@0
|
33
|