2012-06-27 63 views
3

我想用一个逻辑数组掩码来平方此数组a = [1:1:2000}的所有值。逻辑阵列掩码定义为b = a < 500. 我将如何使用掩码来平方这些值?Matlab中的逻辑掩码

回答

7
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 
+0

谢谢!很难成为一名新手^^ – someDude

2

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

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

另外一个,更棘手。在这里,我们将逻辑掩码应用于电源,其值为1或2.

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