行列がたくさんあり、条件を満たす行列の一部だけを抽出したいと思います。
例:150x180
マトリックスの値はから0
に2.80
なり、その間の値のみが必要で1.66
あり1.77
、範囲内の値を元のマトリックスの元の位置に保持し、もう一方をゼロに設定します。
誰か助けてくれませんか。
ありがとうございました
論理インデックスを使用できます。まず、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 は論理インデックス変数を明示的に作成しますが、後でクリアします。