我在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?
感谢您的帮助。
答案 0 :(得分:5)
使用代字号:
[~, output2] = max(matrixA, [], 1);
我怀疑会有多少内存优势(除了分配输出变量之类的文书内容等))因为该函数将完全运行并分配所需的全部内容。这样,您只是没有获取值,并且max
函数范围内的第一个输出变量的值将被垃圾收集。
答案 1 :(得分:2)
用~
字符替换不需要的任何输出变量。
E.g。
[~,I] = max(matrix);
这种模式优于clear
,因为MATLAB解释器和即时编译器可以避免计算忽略变量的内存和CPU成本。
修改强>
这是~
使用Loren Shure的documentation和blog post。我找不到任何关于使用忽略变量来消除不必要计算的确切信息。