假设我有一个函数,它给出了未知数量的输出参数(它取决于输入,因此通过循环改变).如何获得所有这些?
nargout函数使用没有帮助varargout(结果为-1)
当然我不能改写这个功能,否则问题不会出现: - )
好吧,多亏了所有参与讨论的人.总而言之,似乎问题没有通用的解决方案,因为MatLab本身在函数调用之前估计了所需输出的数量.但可以指出三种情况:
1)funcrion没有varargout定义,因此nOut=nargout(@fcn)返回正数.
然后nOut是实际的输出数量,我们可以使用单元格数组和列列表技巧.
X=cell(1,nOut);
[X{:}]=fcn(inputs);
Run Code Online (Sandbox Code Playgroud)
2)funcrion varargout在定义中,因此nOut=nargout(@fcn)返回负数.然而,可以找到一些与输入的相关性(如length(varargin)=length(varargout)).
然后我们就可以计算由此产生的nOut从inputs和执行上述列列表伎俩.
3)你了解fcn开发者.
请他帮忙.例如,使函数的输出成为单元格数组.