annotate arrows/@afirst/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,sizes_in(1:nin));
samer@0 6 u.sizes_out = [u.sizes_out,sizes_in(nin+(1:s.extra))];
samer@0 7 u.process = mkproc(u.process,nin,nargout(s.base),s.extra);
samer@0 8 end
samer@0 9
samer@0 10 function f=mkproc(g,nin,nout,extra)
samer@0 11 f=@proc;
samer@0 12 if extra==1
samer@0 13 if nin==1 && nout==1, f=@proc_111;
samer@0 14 elseif nin==1 && nout==0, f=@proc_101;
samer@0 15 elseif nin==0 && nout==1, f=@proc_011;
samer@0 16 else, x=1:extra; f=@proc_nnn; end
samer@0 17 else
samer@0 18 x=1:extra;
samer@0 19 f=@proc_nnn;
samer@0 20 end
samer@0 21 function [y1,x]=proc_111(x1,x), y1=g(x1); end
samer@0 22 function x=proc_101(x1,x), g(x1); end
samer@0 23 function [y1,x]=proc_011(x), y1=g(x1); end
samer@0 24
samer@0 25 function varargout=proc_nnn(varargin)
samer@0 26 [varargout{1:nout}]=g(varargin{1:nin});
samer@0 27 varargout(nout+x)=varargin(nin+x);
samer@0 28 end
samer@0 29 end
samer@0 30