Разделение выбранных элементов массива на Matlab - PullRequest
1 голос
/ 29 сентября 2011

У меня есть следующий массив

a = [ 1 10 3 4 68 2 34 8 10 ]

И мне нужно разделить каждое число (/ 2), если это число больше 9. Это означает, что 1 не нужно делить, а 10 -разделить (/ 2)

Полученный массив должен быть:

a = [ 1 5 3 4 34 2 17 8 5 ]

Я должен сделать это без использования функции FOR.Итак, я попытался с этим:

a = a./2;

Это делит все номера массива, и я, как я уже говорил, я хочу разделить только те, которые выше, чем 9.

Может кто-нибудь сказать мне, как я могу это сделать?Добавить «если что> 5» в это утверждение или что-то еще?
Заранее спасибо

1 Ответ

4 голосов
/ 29 сентября 2011

Используйте логическое индексирование как для деления только чисел, соответствующих вашему критерию, так и для присвоения результата этим конкретным индексам.

a = [ 1 10 3 4 68 2 34 8 10 ];
a(a>9) = a(a>9) ./ 2
...