Mercurial > hg > ishara
annotate general/funutils/@function_handle/vertcat.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 % vercat - function combinator, f&g (...) = f(...); return g(...) |
samer@38 | 2 % |
samer@38 | 3 % and :: |
samer@38 | 4 % (A{:} => B{:}), |
samer@38 | 5 % (A{:} => C{:}) |
samer@38 | 6 % -> (A{:} => C{:}). |
samer@38 | 7 % |
samer@38 | 8 % and :: |
samer@38 | 9 % (A{1:N} => B{:}), |
samer@38 | 10 % (A{1:N} => C{1:M}), |
samer@38 | 11 % N:natural, |
samer@38 | 12 % M:natural |
samer@38 | 13 % -> (A{1:N} => C{1:M}). |
samer@38 | 14 function h=vercat(varargin) |
samer@38 | 15 g=varargin{end}; |
samer@38 | 16 N=length(varargin)-1; |
samer@38 | 17 fx=varargin(1:N); |
samer@38 | 18 fns = { @q11, @q1n; @qn1, @qnn }; |
samer@38 | 19 h=fns{acount(nargin(g),1),acount(nargout(g),1)}; |
samer@38 | 20 function y=q11(x), callfx1(x); y=g(x); end |
samer@38 | 21 function y=qn1(varargin), callfxn(varargin); y=g(varargin{:}); end |
samer@38 | 22 function varargout=q1n(x), callfx1(x); [varargout{1:nargout}]=g(x); end |
samer@38 | 23 function varargout=qnn(varargin), callfxn(varargin); [varargout{1:nargout}]=g(varargin{:}); end |
samer@38 | 24 |
samer@38 | 25 function callfx1(x), for i=1:N, fx{i}(x); end; end |
samer@38 | 26 function callfxn(args), for i=1:N, fx{i}(args{:}); end; end |
samer@38 | 27 end |