Mercurial > hg > ishara
comparison 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 |
comparison
equal
deleted
inserted
replaced
37:beb8a3f4a345 | 38:9d24b616bb06 |
---|---|
1 % horzcat - function combinator, | |
2 % | |
3 % horzcat :: | |
4 % F:(A{1:N} => B{1:M}), | |
5 % G:(A{1:N} => C{1:L}), | |
6 % N:natural, ~'defaults to nargin(F)' | |
7 % M:natural ~'defaults to nargout(F)' | |
8 % -> (A{1:N} => B{1:M}, C{1:L}). | |
9 function h=horzcat(varargin) | |
10 funs=varargin; | |
11 nouts=cell2mat(map(@nargout,varargin)); | |
12 NN=sum(nouts); N=length(funs); | |
13 fns = { @q1n; @qnn }; | |
14 h=fns{acount(nargin(funs{1}),1)}; | |
15 | |
16 function varargout=q1n(x), | |
17 varargout=cell(1,NN); | |
18 j=0; for i=1:N | |
19 k=j+nouts(i); | |
20 [varargout{j+1:k}]=funs{i}(x); | |
21 j=k; | |
22 end | |
23 end | |
24 function varargout=qnn(varargin), | |
25 varargout=cell(1,NN); | |
26 j=0; for i=1:N | |
27 k=j+nouts(i); | |
28 [varargout{j+1:k}]=funs{i}(varargin{:}); | |
29 j=k; | |
30 end | |
31 end | |
32 end |