В Matlab, у меня есть две матрицы: одна с целыми числами, x
, и один с Булев, y
:Matlab: Используя матрицу в качестве маски для выполнения поэлементно операций
x =
2 4 2
3 3 1
4 1 5
y =
0 0 1
1 1 0
1 0 1
Что я теперь хочу сделать назначить некоторые элементы x
на 5, и я хочу использовать y
в качестве маски для определения того, какие элементы должны быть установлены на 5. Таким образом, элементы с соответствующим значением 0 в y
должны оставаться такими, какими они находятся в x
, но те, у кого есть соответствующее значение 1 в y
должно быть установлено равным 5. Следовательно, выход должен быть:
2 4 5
5 5 1
5 1 5
Я попытался следующие:
x(y) = 5
Что дает мне ошибку:
Subscript indices must either be real positive integers or logicals.
И я также пытался:
y(x) = 5
Который дает мне следующее :
5 5 1
5 1 0
5 0 1
Может кто-нибудь объяснить, что здесь происходит, и что мне нужно сделать, чтобы получить желаемый результат?
Еще короче: 'x (y == 1) = 5;' – rayryeng
@rayryeng - ваше предложение слишком длинное. 'x (~~ y) = 5;';) –
@ Dev-iL - Ищет четкость. Не игра в гольф. – rayryeng