【问题标题】:suppressing output variables in matlab在matlab中抑制输出变量
【发布时间】:2012-06-02 09:26:54
【问题描述】:

我在 Matlab 中使用具有多个输出的函数,但我只对其中一个输出感兴趣。我想抑制其他输出变量(即避免将它们返回并放入内存)。例如,使用 max 函数:

[output1 output2] = max(matrixA, [], 1);
% output1 returns the maximum, which i'm not interested in
% output2 returns the index of the maximum, which i *am* interested in

有没有什么方法可以调用函数使 output1 不返回?如果有,它是否比上述计算提供任何内存优势但立即调用clear output1 以从内存中删除 output1?

感谢您的帮助。

【问题讨论】:

标签: matlab syntax return-value


【解决方案1】:

使用波浪号:

[~, output2] = max(matrixA, [], 1);

我怀疑会有很多内存优势(除了分配输出变量等文书工作),因为该函数将完全运行并分配它需要的所有内容。这样一来,你就不会得到值,max 函数范围内的第一个输出变量的值将被垃圾回收。

【讨论】:

  • 请注意,这在旧版本的 matlab 下不起作用。我相信这是从大约 R2009b 开始实施的......
  • 不知道 - 感谢您指出!人们在 2009b 之前做了什么?
  • 看到这个question(这似乎是重复的)。其中一个答案有另一种选择。
  • @Ansari 使用名为 DUMMY 或类似的变量
  • @Ansari:OP 做了什么^^ 在通话后清除不需要的变量
【解决方案2】:

~ 字符替换您不需要的任何输出变量。

例如

[~,I] = max(matrix);

clear 相比,此模式的优势在于 MATLAB 解释器和即时编译器可以避免计算忽略变量的内存和 CPU 成本。

编辑

这是 Loren Shure 的 documentationblog post 关于 ~ 的使用。我找不到任何关于使用忽略变量来消除不必要计算的确切信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-07
    相关资源
    最近更新 更多