0

Matlab で複数の出力を持つ関数を使用していますが、出力の 1 つだけに関心があります。他の出力変数を抑制したい (つまり、それらが返されてメモリに配置されるのを避けたい)。たとえば、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のコストを回避できるという利点があります。

編集

これは、この使用に関するLorenShureによるドキュメントブログ投稿~です。不要な計算を排除するための無視された変数の使用に関する明確な情報が見つかりません。

于 2012-05-27T21:33:35.403 に答える