【发布时间】:2013-11-27 19:20:23
【问题描述】:
我想在 Matlab 中计算向量的加权最大值。对于加权最大值,我打算如下:
给定一个2*N+1 权重W={w[-N], w[-N+1] .. w[0] .. w[N]} 的向量和一个输入序列A,加权最大值是一个向量M,其中m[i]=max(w[-N]*a[i-N], w[-N+1]*a[i-N+1], ... w[N]*a[i+N])
例如,给定一个向量A= [1, 4, 12, 2, 4] 和权重W=[0.5, 1, 0.5],加权最大值将为M=[2, 6, 12, 6, 4]。
这可以使用ordfilt2 完成,但ordfilt2 使用权重作为加法而不是乘法。
我实际上正在研究 4D 矩阵,但任何 1D 解决方案都可以工作,因为 4D 权重矩阵是可分离的。
我当前的解决方案是生成输入数组A 的移位副本,根据移位对它们进行加权并最大化所有数组。 Shift 使用circshift 执行,是该过程中的瓶颈。通过索引“手动”生成移位矩阵的速度甚至更慢。
您能提出更有效的解决方案吗?
编辑:对于肯定的 A,M=exp(ordfilt2(log(A), length(W), ones(size(W)), log(W))) 完成了这项工作,但仍然比上面的 circshift 解决方案花费更长的时间。我仍在寻找更有效的解决方案。
【问题讨论】:
标签: matlab max morphological-analysis