comparison general/funutils/@function_handle/or.m @ 39:c388f1c70669

Updated documentation and fixed some bugs in function algebra
author samer
date Tue, 29 Jan 2013 17:02:00 +0000
parents 9d24b616bb06
children
comparison
equal deleted inserted replaced
38:9d24b616bb06 39:c388f1c70669
4 % F:(A{1:N} => B{1:M}), 4 % F:(A{1:N} => B{1:M}),
5 % G:(A{1:N} => C{1:L}), 5 % G:(A{1:N} => C{1:L}),
6 % N:natural, ~'defaults to nargin(F)' 6 % N:natural, ~'defaults to nargin(F)'
7 % M:natural ~'defaults to nargout(F)' 7 % M:natural ~'defaults to nargout(F)'
8 % -> (A{1:N} => B{1:M}, C{1:L}). 8 % -> (A{1:N} => B{1:M}, C{1:L}).
9 function h=and(f,g,nin,nout) 9 function h=or(f,g,nin,nout)
10 if nargin<4, nout=nargout(f); end 10 if nargin<4, nout=nargout(f); end
11 if nargin<3, nin=nargin(f); end 11 if nargin<3, nin=nargin(f); end
12 noutg=nargout(g);
12 fns = { @q11, @q1n; @qn1, @qnn }; 13 fns = { @q11, @q1n; @qn1, @qnn };
13 h=fns{acount(nin,1),max(acount(nargout(g),1),acount(nout,1))}; 14 h=fns{acount(nin,1),max(acount(nargout(g),1),acount(nout,1))};
14 15
15 function [y,z]=q11(x), y=f(x); z=g(x); end 16 function [y,z]=q11(x), y=f(x); z=g(x); end
16 function [y,z]=qn1(varargin), y=f(varargin{:}); z=g(varargin{:}); end 17 function [y,z]=qn1(varargin), y=f(varargin{:}); z=g(varargin{:}); end
17 function varargout=q1n(x), [varargout{1:nout}]=f(x); [varargout{nout+1:nargout}]=g(x); end 18 function varargout=q1n(x), [varargout{1:nout}]=f(x); [varargout{nout+1:nargout}]=g(x); end
18 function varargout=qnn(varargin), 19 function varargout=qnn(varargin),
19 [varargin{1:nout}]=f(varargin{:}); 20 [varargout{1:nout}]=f(varargin{:});
20 [varargout{1:nargout}]=g(varargin{:}); 21 [varargout{nout+(1:noutg)}]=g(varargin{:});
21 end 22 end
22 end 23 end