Joh*_*ohn 8 reflection matlab function
在Matlab中,您可以使用以下语法忽略输出:
[~, ixMax] = max(foo);
Run Code Online (Sandbox Code Playgroud)
我有一个功能,有签名
[out, out1, out2, out3] = function foo(in1, in2, in3)
Run Code Online (Sandbox Code Playgroud)
out1,out2并且out3是可选输出,每个仅在非常特定(不寻常)的情况下需要. Foo在计算上是昂贵的,并且out1/ out2或者out3都在计算上更加昂贵,但依赖于由中间生成的中间状态foo.我希望能够避免计算out1/ out2/ out3如果调用者使用a ~来忽略它们.我如何在定义中检查foo?
它不会加速这个过程.这~是一种让读者告诉他你不需要这些输出的方法.它还节省了此变量的内存使用量.
Matlab文档说:
但是,某些函数会返回使用更多内存的结果.如果您不需要这些变量,则会浪费系统空间.
因此,它不会提高性能,因为这些值无论如何都是内部计算的.
Yair M. Altman 的书" 加速MATLAB性能:1001提示加速MATLAB程序 "(p187):
但是,如果不使用~,并且如果需要第一个输出,则用户只需移除~括号和写入即可获得计算时间.
out = function foo(in1, in2, in3)
Run Code Online (Sandbox Code Playgroud)