4

論理配列マスクを使用して、この配列a = [1:1:2000}のすべての値を2乗しようとしています。論理配列マスクは、b =a<500として定義されます。マスクを使用してこれらの値を2乗するにはどうすればよいですか?

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つ、もっとトリッキーです。ここでは、値1または2を取得する累乗に論理マスクを適用します。

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