Tin*_*gwa 5 variables matlab capture
我希望Matlab返回变量输入函数的所有输出.例如,
[varargout] = cpd_intersect(varargin {:});
这只返回最后一个输出但我知道该函数被定义为提供多个输出.
而不是在[A,B,C ...] = pd_intersect(varargin {:})中定义虚拟变量A,B,C等.我希望像单元格一样根据输入的值来存储所有输出值.我希望这是有道理的.提前谢谢了.
我知道这已经晚了,但我认为这就是你想要的:
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
Run Code Online (Sandbox Code Playgroud)
这里的见解就是这样
NARGOUT 可以对功能进行操作并返回其最大输出数[ X{1:2} ] = ...当X未定义时在左侧使用,相当于做[ X{1} X{2} ] = ...,并且可以将2个单独的输出捕获到单个变量中.有两点需要注意:
@(x)eig(x)varargout,即具有真正可变数量输出的功能.如果是这种情况,那么应该有一种方法来计算你将拥有多少输出,例如使用nargin.PS我是从@gnovice学到的,如果一个MATLAB函数返回一个可变数量的值,我怎么能把它们全部作为单元格数组?