私は行列を持っていますA=[1 2 -3; 45-2]。ここで、forループを使用せずに、0未満の値が0を返すように配列をフィルター処理したいと思います。したがって、出力行列はRES = [1 2 0; 450]。
問題を解決するためのリンク/サンプルコードをいただければ幸いです。
私は行列を持っていますA=[1 2 -3; 45-2]。ここで、forループを使用せずに、0未満の値が0を返すように配列をフィルター処理したいと思います。したがって、出力行列はRES = [1 2 0; 450]。
問題を解決するためのリンク/サンプルコードをいただければ幸いです。
RES = A;
RES(RES<0)=0
RES<0
この場合、論理配列を生成し[false false true; false false true]
ます。次に、この表記RES(RES<0)=
により、ある値に当てはまるすべての値を設定できます。
これは非常に典型的で便利なMatlabイディオムです。
他の人が示しているように、これを行うにはいくつかの方法があります。ある解決策または別の解決策が最善である場合があるので、あなたが評価する必要があるのはあなたが持っている選択です。だからこれを試してみてください:
RES = max(A,0);
結果の各要素に対して、0またはA(i)の大きい方を取ります。結果を事前に割り当てる必要がないため、このソリューションでは1行しか必要ありません。