有誰知道Matlab的Z=dist(W,P)
是如何工作的? Matlab documentation未指定使用權重矩陣W的算法。我正在使用Octave並嘗試模仿該行爲。到目前爲止,這個stack overflow post幫助我證明Octave的Z=squareform(pdist(P'))
等價於Matlab的Z=dist(P)
。我也可以用一對夫婦的for循環指定Z的元素:Matlab如何在歐幾里德距離權重函數中應用權重?
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.我不能簡單地用W,因爲乘的squareform(pdist(P'))
輸出尺寸不匹配。我試圖預先乘以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
預先感謝任何幫助,您可以提供!
以及...這個答案只有當有人訪問一個matlab安裝有幫助:( – kaefert