【发布时间】:2014-07-09 15:02:00
【问题描述】:
假设我有一个函数给出未知数量的输出参数(它取决于输入,因此通过循环改变)。如何全部获得?
nargout 没有帮助,因为该函数使用 varargout(结果为 -1)
当然我不能重写函数,否则问题就不会出现:-)
【问题讨论】:
-
你知道输入 - 你是说你仍然不知道函数返回多少输出?输出可能取决于输入,但通常应该在输入和输出数量之间存在简单的关系……至少对于设计合理的功能而言。
-
尝试将输出分配给单个变量。如果使用 varargout,则此变量本身应该是一个元胞数组。找出它的长度。
-
实际上,我正在努力寻找一个合理的情况,即您不知道会有多少输出。你能举个例子吗?
-
有趣的问题。我不得不猜测对此没有好的通用解决方案。我认为函数调用(与函数定义相反)的输出数量必须在评估函数之前定义。
nargout的帮助建议了这一点:“在用户定义函数的主体内,nargout 返回用于调用函数的输出参数的数量。” (请注意,这是指在您的函数内部使用varargout,而不是在您正确的地方,它在这里并没有真正的帮助。) -
@Noxobar 恕我直言,这是唯一正确的方法。每个编写返回变量和先验未知数量输出的函数的人都应该受到惩罚。这只是一个非常糟糕的例子,说明如何使用具有多个输出的特性......