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