samer@39: % gt - select outputs from function samer@39: % samer@39: % gt :: (A{:}=>B{1:N}), I:[M]->[N]] -> (A{:}=>B{I}). samer@39: % samer@39: % f>[i,j,k...] is a function which takes the same arguments as f samer@39: % but returns the ith,jth,kth etc return values from f as the 1st, 2nd, 3rd etc samer@39: % return values. samer@39: % eg feval(@eig>2,X) returns the eigenvectors of X. samer@39: samer@38: function g=gt(f,I,nin) samer@38: if nargin<3, nin=nargin(f); end samer@38: nout=length(I); MI=max(I); samer@38: fns = { @q11, @q1n; @qn1, @qnn }; samer@38: g=fns{acount(nin,1),acount(nout,1)}; samer@38: samer@38: function y=q11(x), [rets{1:MI}]=f(x); y=rets{I}; end samer@38: function y=qn1(varargin), [rets{1:MI}]=f(varargin{:}); y=rets{I}; end samer@38: function varargout=q1n(x), [rets{1:MI}]=f(x); varargout=rets(I); end samer@38: function varargout=qnn(varargin), [rets{1:MI}]=f(varargin{:}); varargout=rets(I); end samer@38: end samer@38: