Operandos a la || y los operadores && deben ser convertibles a valores escalares lógicos

Tengo un problema simple que estoy buscando una implementación rápida en Matlab. Tengo una serie de valores, digamos:

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

Entonces tengo una matriz de umbral de tamaño similar, digamos que es:

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

Para valores dentro dea si son 0.5x más pequeños que el valor correspondiente ena_thresh Quiero que la salida sea 0, de manera similar para 1.2x el valor ena_thresh también debe ponerse a cero,es decir:

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

Para valores entre 0.4x y 0.5x y 1.0x y 1.2x quiero una cantidad proporcional y, en caso contrario, entre 0.5 y 1.0 quiero usar el valor dea inalterado Pensé que podría usar algo como lo siguiente:

 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;

Sin embargo, me sale un error que dice:

Operandos para || Las operaciones &&& deben ser convertibles a valores escalares lógicos.

¿Algún consejo sobre cómo resolver esto? Obviamente, podría usar bucles para hacer esto y sería trivial, pero quiero mantener el código vectorizado.

Respuestas a la pregunta(1)

Su respuesta a la pregunta