请求的函数输出参数

时间:2018-09-03 16:43:11

标签: matlab function optimization output

假设我有

function [a, b] = foo
a = 1;
b = 2;

并且用户正在呼叫

[~, B] = foo;

我只希望发生b = 2,以防止进行耗时的操作a = 1。有没有办法找出用户实际上并未请求a

很久以前it was not possible。我想知道Mathworks是否对此进行了改进,还是有人在此期间找到了解决方法。

注意:可能相反:如果用户调用A = foo,则nargout为1。

1 个答案:

答案 0 :(得分:0)

不可能是有充分理由的。仅仅因为您在函数返回时不需要中间输出,并不表示在函数内 不需要进行中间计算,除非您明确地编写函数。 >

例如,即使未在输出时明确请求,输出3的计算也可能取决于函数内部的输出2。 Matlab无法知道这一点,因此不能假定涉及该输出的任何和所有计算都可以丢弃。

如果您需要一种内存有效的方式来确保仅进行正确的计算,请更改输出策略。

我建议返回一个带有正确字段的结构,您在其中请求函数调用时需要的字段。这样,您的最终结构将只包含所需的字段,并且可以确保函数内部不会发生不必要的计算。