matlab中输出变量的抑制

matlab中输出变量的抑制,matlab,syntax,return-value,Matlab,Syntax,Return Value,我在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 是

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

感谢您的帮助。

使用瓷砖:

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

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

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

例如

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

编辑


以下是Loren Shure关于
~
使用的详细信息和建议。我找不到任何关于使用忽略变量来消除不必要计算的明确信息。

注意,这在旧版本的matlab下是不起作用的。我相信这是从R2009b开始实施的…我不知道-谢谢你指出这一点!2009年之前人们做了什么?看这个(这似乎是重复的)。其中一个答案有另一个选择。@Ansari使用一个名为DUMMY或其他变量similar@Ansari:什么OP ^^在调用后清除不需要的变量可能重复。此外,与@Amro唯一的区别似乎是提到了性能方面的考虑,但据我所知,没有。@reve_etrange:我想如果您真的想避免不必要的计算,您必须将函数设计为返回
varargout
参数,并重写它,使其仅在传递了足够的输出参数(由
nargout
值确定)的情况下进行计算@Amro幸运的是,这种方法并不困难。不过,这太糟糕了,JIT编译器似乎是一个很好的地方。
[~,I] = max(matrix);