annotate arrows/@arr/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 if isempty(s.sizefn)
samer@0 4 u.sizes_out=guess_sizes(s.fn,sizes_in,nargout(s));
samer@0 5 else
samer@0 6 u.sizes_out=s.sizefn(sizes_in);
samer@0 7 end
samer@0 8 u.process=mkproc(s.fn,nargin(s),nargout(s));
samer@0 9
samer@0 10 end
samer@0 11
samer@0 12 function f=mkproc(fn,nin,nout);
samer@0 13 if nout==0, f = @proc_n0;
samer@0 14 elseif nin==0, f = @proc_0n;
samer@0 15 elseif nin==1 && nout==1, f=@proc_11;
samer@0 16 else f=@proc_nn; end
samer@0 17
samer@0 18 function proc_n0(varargin), fn(varargin{1:nin}); end
samer@0 19 function out=proc_11(in), out=fn(in); end
samer@0 20 function varargout=proc_0n, [varargout{1:nout}]=fn(); end
samer@0 21 function varargout=proc_nn(varargin),
samer@0 22 [varargout{1:nout}]=fn(varargin{1:nin});
samer@0 23 end
samer@0 24 end
samer@0 25
samer@0 26 function sz_out=guess_sizes(fn,sz_in,nout)
samer@0 27 ins = map(@zeros,sz_in);
samer@0 28 [outs{1:nout}] = fn(ins{:});
samer@0 29 sz_out = map(@size,outs);
samer@0 30 end
samer@0 31