4

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

4

3 回答 3

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
于 2012-06-27T19:36:37.817 回答
2

如果您需要结果与a(保持a >= 500原样)大小相同,则:

a_sq = (a .^ 2) .* (a < 500) + a .* (a >= 500);
于 2012-06-27T21:28:06.740 回答
1

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

a_sq = a .^ (2 - (a >= 500));
于 2013-07-25T00:10:46.473 回答