annotate general/funutils/@function_handle/horzcat.m @ 38:9d24b616bb06

Added function algebra.
author samer
date Tue, 29 Jan 2013 15:59:01 +0000
parents
children c388f1c70669
rev   line source
samer@38 1 % horzcat - function combinator,
samer@38 2 %
samer@38 3 % horzcat ::
samer@38 4 % F:(A{1:N} => B{1:M}),
samer@38 5 % G:(A{1:N} => C{1:L}),
samer@38 6 % N:natural, ~'defaults to nargin(F)'
samer@38 7 % M:natural ~'defaults to nargout(F)'
samer@38 8 % -> (A{1:N} => B{1:M}, C{1:L}).
samer@38 9 function h=horzcat(varargin)
samer@38 10 funs=varargin;
samer@38 11 nouts=cell2mat(map(@nargout,varargin));
samer@38 12 NN=sum(nouts); N=length(funs);
samer@38 13 fns = { @q1n; @qnn };
samer@38 14 h=fns{acount(nargin(funs{1}),1)};
samer@38 15
samer@38 16 function varargout=q1n(x),
samer@38 17 varargout=cell(1,NN);
samer@38 18 j=0; for i=1:N
samer@38 19 k=j+nouts(i);
samer@38 20 [varargout{j+1:k}]=funs{i}(x);
samer@38 21 j=k;
samer@38 22 end
samer@38 23 end
samer@38 24 function varargout=qnn(varargin),
samer@38 25 varargout=cell(1,NN);
samer@38 26 j=0; for i=1:N
samer@38 27 k=j+nouts(i);
samer@38 28 [varargout{j+1:k}]=funs{i}(varargin{:});
samer@38 29 j=k;
samer@38 30 end
samer@38 31 end
samer@38 32 end