如何用〜来确定是否忽略输出

时间:2017-10-10 13:21:52

标签: matlab function reflection

在Matlab中,您可以使用以下syntax忽略输出:

[~, ixMax] = max(foo);

我有一个带签名的功能

[out, out1, out2, out3] = function foo(in1, in2, in3)

out1out2out3是可选输出,每个输出仅在非常具体(不寻常)的情况下才需要。 Foo的计算成本很高,而out1 / out2 / out3的计算成本更高,但依赖于foo生成的中间状态。如果调用方使用out1忽略它们,我希望能够避免计算out2 / out3 / ~。如何在foo的定义中检查?

1 个答案:

答案 0 :(得分:6)

它不会加速这个过程。 ~是一种让读者告诉他你不需要这些输出的方法。它还节省了此变量的内存使用量。

Matlab documentation说:

  

但是,某些函数会返回使用更多内存的结果。如果您不需要这些变量,则会浪费系统空间。

因此,它不会提高性能,因为无论如何都会在内部计算这些值。

由Yair M. Altman撰写的加速MATLAB性能:1001提示加速MATLAB程序的书(p187):

enter image description here

但是,如果需要第一个输出,则不使用~,用户只需删除~和括号,然后编写即可获得计算时间

out = function foo(in1, in2, in3)