我有一个简单的问题,需要用Matlab快速实现。假设我有一个数值数组:
a = floor(rand(5,5).*255)
我随后有一个大小相似的阈值数组,假设它是:
a_thresh = floor(rand(5,5).*255)
如果在 a
中的值是对应的 a_thresh
值的0.5倍,则希望输出为0-同样地,对于1.2倍于 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;
然而,我遇到了一个错误,提示如下:
"||" 和 "&&" 操作的运算数必须可转换为逻辑标量值。
有没有什么建议来解决这个问题?显然,我可以使用循环来解决这个问题,但是我想保持代码向量化。