我知道这已经晚了,但我认为这就是你想要的:
function [varargout] = myfun(f, varargin)
% apply f to args, and return all its outputs
[ x{1:nargout(f)} ] = f(varargin{:}); % capture all outputs into a cell array
varargout = x; % x{:} now contains the outputs of f
这里的见解就是这样
> NARGOUT可以对函数进行操作并返回其最大输出数
>当X未定义时,在左侧使用[X {1:2}] = …相当于执行[X {1} X {2}] = …,并且可以捕获2个单独的输出个别变数.
有两点需要注意:
>这也适用于匿名功能!例如@(X)EIG(x)的
>它不适用于使用varargout的函数,即具有真正可变数量输出的函数.如果是这种情况,则应该有一种方法来计算您将拥有多少输出,例如使用nargin.