我有一个矩阵 A = [1 2 -3; 4 5 -2]。现在不使用 for 循环,我想以这样一种方式过滤数组,以便任何小于 0 的值都将返回 0。因此,输出矩阵将为 RES = [1 2 0; 4 5 0]。
任何解决问题的链接/示例代码将不胜感激。
我有一个矩阵 A = [1 2 -3; 4 5 -2]。现在不使用 for 循环,我想以这样一种方式过滤数组,以便任何小于 0 的值都将返回 0。因此,输出矩阵将为 RES = [1 2 0; 4 5 0]。
任何解决问题的链接/示例代码将不胜感激。
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) 中的较大者。一件好事是这个解决方案只需要一行,因为您不需要预先分配结果。