假设我有一个函数给出未知数量的输出参数(它取决于输入,因此通过循环改变)。如何获得所有这些?
nargout
没有帮助,因为该函数使用 varargout
(结果为 -1)
当然我不能重写函数,否则问题不会出现:-)
最佳答案
好的,感谢所有参与讨论的人。综上所述,这个问题似乎没有通用的解决方案,因为 MatLab 本身会在函数调用之前估计所需输出的数量以在其内部使用。不过可以指出三种情况:
1) 函数在定义中没有varargout
,因此nOut=nargout(@fcn)
返回正数。
然后 nOut
是输出的实际数量,我们可以使用元胞数组和列列表技巧。
X=cell(1,nOut);
[X{:}]=fcn(inputs);
2) 函数定义了varargout
,因此nOut=nargout(@fcn)
返回负数。然而,可以找到与输入的一些相关性(如 length(varargin)=length(varargout)
)。
然后我们可以从 inputs
计算结果 nOut
并执行上面的列列表技巧。
3) 你认识 fcn
开发者。
向他寻求帮助。例如,使函数的输出成为元胞数组。
关于matlab - 如何获得所有输出(MatLab)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24657164/