annotate general/funutils/@function_handle/horzcat.m @ 61:eff6bddf82e3 tip

Finally implemented perceptual brightness thing.
author samer
date Sun, 11 Oct 2015 10:20:42 +0100
parents c388f1c70669
children
rev   line source
samer@38 1 % horzcat - function combinator,
samer@38 2 %
samer@38 3 % horzcat ::
samer@39 4 % (A{1:N} => B{1}{:}),
samer@39 5 % (A{1:N} => B{2}{:}),
samer@39 6 % ...
samer@39 7 % -> (A{1:N} => B{1}{:}, B{2}{:}, ...).
samer@39 8 %
samer@39 9 % [f,g,h,...] is the function which calls f,g,h etc in order
samer@39 10 % with given arguments and returns all their values as multiple
samer@39 11 % return values.
samer@39 12 % eg, [a,b,c]=feval([@zeros,@ones,@eye],2)
samer@39 13 % Returns a=[0,0;0,0], b=[1,1;1,1], c=[1,0;0,1].
samer@39 14
samer@38 15 function h=horzcat(varargin)
samer@38 16 funs=varargin;
samer@38 17 nouts=cell2mat(map(@nargout,varargin));
samer@38 18 NN=sum(nouts); N=length(funs);
samer@38 19 fns = { @q1n; @qnn };
samer@38 20 h=fns{acount(nargin(funs{1}),1)};
samer@38 21
samer@38 22 function varargout=q1n(x),
samer@38 23 varargout=cell(1,NN);
samer@38 24 j=0; for i=1:N
samer@38 25 k=j+nouts(i);
samer@38 26 [varargout{j+1:k}]=funs{i}(x);
samer@38 27 j=k;
samer@38 28 end
samer@38 29 end
samer@38 30 function varargout=qnn(varargin),
samer@38 31 varargout=cell(1,NN);
samer@38 32 j=0; for i=1:N
samer@38 33 k=j+nouts(i);
samer@38 34 [varargout{j+1:k}]=funs{i}(varargin{:});
samer@38 35 j=k;
samer@38 36 end
samer@38 37 end
samer@38 38 end