【问题标题】:Logical mask in MatlabMatlab中的逻辑掩码
【发布时间】:2013-07-25 08:10:46
【问题描述】:

我正在尝试使用逻辑数组掩码来对该数组 a = [1:1:2000} 的所有值求平方。逻辑数组掩码定义为 b = a

【问题讨论】:

    标签: matlab


    【解决方案1】:
    a = 1:2000; %# 1 by 2000 double
    b = a<500;  %# 1 by 2000 logical    
    a_squared     = a(b).^2; %# 1 by 499 double
    %# logical index--^ ^-- 'dot' means element-wise operation
    

    【讨论】:

    • 谢谢!很难成为新手^^
    【解决方案2】:

    如果您需要结果与a 的大小相同(保持a &gt;= 500 的值不变),那么:

    a_sq = (a .^ 2) .* (a < 500) + a .* (a >= 500);
    

    【讨论】:

      【解决方案3】:

      另一个,更棘手。在这里,我们将逻辑掩码应用于幂,它的值是 1 或 2。

      a_sq = a .^ (2 - (a >= 500));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-05-07
        • 2017-02-23
        • 2016-03-16
        • 2017-09-02
        相关资源
        最近更新 更多