0

我在 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?

谢谢你的帮助。

4

2 回答 2

5

使用波浪号:

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

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

于 2012-05-27T21:32:17.733 回答
2

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

例如

[~,I] = max(matrix);

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

编辑

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

于 2012-05-27T21:33:35.403 回答