2

私は行列を持っていますA=[1 2 -3; 45-2]。ここで、forループを使用せずに、0未満の値が0を返すように配列をフィルター処理したいと思います。したがって、出力行列はRES = [1 2 0; 450]。

問題を解決するためのリンク/サンプルコードをいただければ幸いです。

4

2 に答える 2

4
RES = A;
RES(RES<0)=0

RES<0この場合、論理配列を生成し[false false true; false false true]ます。次に、この表記RES(RES<0)=により、ある値に当てはまるすべての値を設定できます。

これは非常に典型的で便利なMatlabイディオムです。

于 2012-09-11T05:41:16.327 に答える
3

他の人が示しているように、これを行うにはいくつかの方法があります。ある解決策または別の解決策が最善である場合があるので、あなたが評価する必要があるのはあなたが持っている選択です。だからこれを試してみてください:

RES = max(A,0);

結果の各要素に対して、0またはA(i)の大きい方を取ります。結果を事前に割り当てる必要がないため、このソリューションでは1行しか必要ありません。

于 2012-09-11T13:27:59.380 に答える