2

我有一个矩阵 A = [1 2 -3; 4 5 -2]。现在不使用 for 循环,我想以这样一种方式过滤数组,以便任何小于 0 的值都将返回 0。因此,输出矩阵将为 RES = [1 2 0; 4 5 0]。

任何解决问题的链接/示例代码将不胜感激。

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) 中的较大者。一件好事是这个解决方案只需要一行,因为您不需要预先分配结果。

于 2012-09-11T13:27:59.380 回答