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.