【发布时间】:2017-10-10 13:21:52
【问题描述】:
在 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 的定义中检查?
【问题讨论】:
-
nargout是您所需要的。如果你做[out,~,~,~]=不确定它是否有效,但如果你做[out]=它会有效 -
@AnderBiguri 与
nargout是对的 - 如果用户请求 [out,~,~,~],它将返回 4。我认为没有任何(肯定记录在案)方法来确定用户是否指定了 var 名称而不是~ -
@m7913d,看起来不像是骗子。 OP 询问他是否可以通过避免使用
~调用输出来节省计算资源。 -
@Bebs 但为此他需要确定输出是否未使用(因此用户是否使用了
~) -
@Bebs 标题显然相同(并且正确反映了主要问题)。请注意,部分答案可能在重复的问题中。
标签: matlab function reflection