【问题标题】:Find the values within a range: Matlab查找范围内的值:Matlab
【发布时间】:2012-09-11 05:19:34
【问题描述】:

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

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

【问题讨论】:

    标签: matlab


    【解决方案1】:
    RES = A;
    RES(RES<0)=0
    

    RES&lt;0 生成一个逻辑数组,在本例中为[false false true; false false true]。然后符号RES(RES&lt;0)= 允许您将所有值设置为某个值的真值。

    这是一个非常典型且有用的 Matlab 习语。

    【讨论】:

      【解决方案2】:

      正如其他人所展示的,有几种方法可以做到这一点。您需要欣赏的是您拥有的选择,因为有时一种或另一种解决方案将是最好的。所以试试这个:

      RES = max(A,0);
      

      结果中的每个元素取 0 或 A(i) 中的较大者。一件好事是这个解决方案只需要一行,因为您不需要预先分配结果。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多