2014-02-20 46 views
2

有誰知道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 

預先感謝任何幫助,您可以提供!

回答

0

看來神經網絡工具箱在Matlab本身實現,所以你可以看看這些源文件並找出它。

如果打開dist通過在命令窗口中輸入edit dist,你看到它調用dist.applydist.distance做實際的工作,後者再dist.apply。因此,我的猜測是,你正在尋找的東西可以在命令窗口中看到它

toolbox/nnet/nnet/nndistance/+dist/apply.m 

類型edit dist.apply線9被發現。

+0

以及...這個答案只有當有人訪問一個matlab安裝有幫助:( – kaefert