【发布时间】:2014-02-22 03:53:10
【问题描述】:
有人知道 Matlab 的 Z=dist(W,P) 是如何工作的吗? Matlab documentation 没有指定使用权重矩阵 W 的算法。
我正在使用 Octave 并试图模仿这种行为。到目前为止,这个stack overflow post帮助我证明了Octave的Z=squareform(pdist(P'))等价于Matlab的Z=dist(P)。我还可以使用几个 for 循环来指定 Z 的元素:
function z=dist(w,p)
for i=1:size(p,2)
for j=1:size(p,2)
u=p(:,i);
v=p(:,j);
z(i,j)=sum((u-v).^2).^0.5;
end
end
end
但是,我找不到关于权重矩阵 W 的任何在线文档。我不能简单地将 squareform(pdist(P')) 的输出乘以 W,因为尺寸不匹配。我试图预乘 W,例如sqrt(W*(P(:,1)-P(:,2)).^2),类似this stack overflow post,但输出幅度错误。
这是一个使用 Matlab 的示例:
P=
9 7 10
10 1 10
2 3 2
10 6 10
W=
10 9 5 8
5 2 10 10
>> D = dist(P)
0 10.0995 1.0000
10.0995 0 10.3441
1.0000 10.3441 0
>> D = dist(W,P)
3.8730 9.0000 3.7417
12.0000 8.3666 12.3693
提前感谢您提供的任何帮助!
【问题讨论】: