我有一个简单的问题,我正在寻找在 Matlab 中的快速实现。我有一个值数组,比方说:
a = floor(rand(5,5).*255)
然后我有一个类似大小的阈值数组,假设它是:
a_thresh = floor(rand(5,5).*255)
对于其中的值,a
如果它们比a_thresh
我希望输出为 0 中的相应值小 0.5 倍 - 同样对于 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;
但是,我收到一条错误消息:
|| 的操作数 和 && 操作必须可转换为逻辑标量值
关于如何解决这个问题的任何建议?显然我可以使用循环来做到这一点,这将是微不足道的,但我想保持代码矢量化。