Операнды к || и && операторы должны быть преобразованы в логические скалярные значения

У меня есть простая проблема, которую я ищу для быстрой реализации в Matlab. У меня есть массив значений, скажем:

 a = floor(rand(5,5).*255)

Затем у меня есть пороговый массив одинакового размера, скажем, это:

a_thresh = floor(rand(5,5).*255)

Для значений в пределахa если они в 0,5 раза меньше соответствующего значения вa_thresh Я хочу, чтобы результат был 0 - аналогично для 1.2x значение вa_thresh также должен быть установлен на ноль,то есть:

a(a < a_thresh.*0.4) = 0
a(a > a_thresh.*1.2) = 0

Для значений от 0,4x до 0,5x и от 1,0x до 1,2x я хочу пропорциональную величину, а где от 0,5 до 1,0 я хочу использовать значениеa в неизмененном виде. Я думал, что мог бы использовать что-то вроде следующего:

 a(a>= a_thresh .* 0.4 && a <a_thresh.* 0.5) = ((a - a_thresh.*0.4)/(a_thresh.*0.5 a_thresh.*0.4)) .* a;

Однако я получаю сообщение об ошибке:

Операнды для || и && операции должны быть преобразованы в логические скалярные значения

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

Ответы на вопрос(1)

Ваш ответ на вопрос