annotate general/funutils/@function_handle/or.m @ 61:eff6bddf82e3
tip
Finally implemented perceptual brightness thing.
author |
samer |
date |
Sun, 11 Oct 2015 10:20:42 +0100 |
parents |
c388f1c70669 |
children |
|
rev |
line source |
samer@38
|
1 % or - function combinator, f|g (...) = f(...), g(...)
|
samer@38
|
2 %
|
samer@38
|
3 % or ::
|
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@39
|
9 function h=or(f,g,nin,nout)
|
samer@38
|
10 if nargin<4, nout=nargout(f); end
|
samer@38
|
11 if nargin<3, nin=nargin(f); end
|
samer@39
|
12 noutg=nargout(g);
|
samer@38
|
13 fns = { @q11, @q1n; @qn1, @qnn };
|
samer@38
|
14 h=fns{acount(nin,1),max(acount(nargout(g),1),acount(nout,1))};
|
samer@38
|
15
|
samer@38
|
16 function [y,z]=q11(x), y=f(x); z=g(x); end
|
samer@38
|
17 function [y,z]=qn1(varargin), y=f(varargin{:}); z=g(varargin{:}); end
|
samer@38
|
18 function varargout=q1n(x), [varargout{1:nout}]=f(x); [varargout{nout+1:nargout}]=g(x); end
|
samer@38
|
19 function varargout=qnn(varargin),
|
samer@39
|
20 [varargout{1:nout}]=f(varargin{:});
|
samer@39
|
21 [varargout{nout+(1:noutg)}]=g(varargin{:});
|
samer@38
|
22 end
|
samer@38
|
23 end
|