Matlab中的逻辑掩码

时间:2012-06-27 19:11:17

标签: matlab

我正在尝试使用逻辑数组掩码来对此数组的所有值进行平方a = [1:1:2000}。逻辑阵列掩码定义为b = a <500。 我如何使用蒙版对这些值进行平方?

3 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:2)

如果您需要的结果与a相同(保持a >= 500值),则:

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

答案 2 :(得分:1)

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

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