論理配列マスクを使用して、この配列a = [1:1:2000}のすべての値を2乗しようとしています。論理配列マスクは、b =a<500として定義されます。マスクを使用してこれらの値を2乗するにはどうすればよいですか?
質問する
5106 次
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 に答える