在Matlab中,您可以使用以下syntax忽略输出:
[~, ixMax] = max(foo);
我有一个带签名的功能
[out, out1, out2, out3] = function foo(in1, in2, in3)
out1
,out2
和out3
是可选输出,每个输出仅在非常具体(不寻常)的情况下才需要。 Foo
的计算成本很高,而out1
/ out2
/ out3
的计算成本更高,但依赖于foo
生成的中间状态。如果调用方使用out1
忽略它们,我希望能够避免计算out2
/ out3
/ ~
。如何在foo
的定义中检查?
答案 0 :(得分:6)
它不会加速这个过程。 ~
是一种让读者告诉他你不需要这些输出的方法。它还节省了此变量的内存使用量。
但是,某些函数会返回使用更多内存的结果。如果您不需要这些变量,则会浪费系统空间。
因此,它不会提高性能,因为无论如何都会在内部计算这些值。
由Yair M. Altman撰写的加速MATLAB性能:1001提示加速MATLAB程序的书(p187):
但是,如果需要第一个输出,则不使用~
,和,用户只需删除~
和括号,然后编写即可获得计算时间
out = function foo(in1, in2, in3)