0

行列がたくさんあり、条件を満たす行列の一部だけを抽出したいと思います。

例:150x180マトリックスの値はから02.80なり、その間の値のみが必要で1.66あり1.77 、範囲内の値を元のマトリックスの元の位置に保持し、もう一方をゼロに設定します。

誰か助けてくれませんか。

ありがとうございました

4

1 に答える 1

7

論理インデックスを使用できます。まず、A条件を満たさないエントリを見つけます。次に、A(idx)それらを 0 に変更します。

% example matrix
A = 2.8*rand(150, 180);

% find entries meeting some criterion
idx = A<1.66 | A>1.77;
A(idx) = 0;

または、より簡単に、Rody Oldenhuis が提案したように、論理式を行列参照に直接含めることができます。

A(A<1.66 | A>1.77) = 0;

これにより、短くてきれいなコードが生成されますが、高速なコードにはなりません。MATLAB は論理インデックス変数を明示的に作成しますが、後でクリアします。

于 2012-10-08T12:38:07.217 に答える