Операнды к || и && операторы должны быть преобразованы в логические скалярные значения
У меня есть простая проблема, которую я ищу для быстрой реализации в 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;
Однако я получаю сообщение об ошибке:
Операнды для || и && операции должны быть преобразованы в логические скалярные значения
Любой совет, как решить эту проблему? Очевидно, я мог бы использовать циклы для этого, и это было бы тривиально, но я хочу сохранить код векторизованным.