Mercurial > hg > ishara
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 |