2012-06-27 3 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)); 
Смежные вопросы