2013-12-11 88 views
0

我有以下兩個向量,並試圖找到它們之間的距離Mahalanobis。這兩個向量如下:MATLAB中兩個向量之間的Mahalanobis距離

A=[2,4,5,7]; 
B=[6,3,8,1]; 

爲了計算Mahalanobis distance,我做了以下內容:

> mahal(A(:),B(:))

對於這一點,我得到了以下結果:

0.6466 
0.0259 
0.0259 
0.6466 

但,那麼我怎樣才能得到one的值,例如當你計算Euclidean的距離時呢?

謝謝。

+0

Mahalanobis距離不僅僅是一個向量距離。它是一個統計距離,既可以在兩個多元分佈之間,也可以在向量與多變量分佈之間。 'mahal'實現後者,向量化幾個樣本向量。 –

回答

3

馬哈拉諾比斯距離實際上是距離分佈均值的距離。所以如果沒有分配,它就變得與歐幾里德距離相似(不等於)。

根據MATLAB:

Mahal的(Y,X)計算(以平方單位)的每個觀測 Y中從矩陣X的參考樣品的馬氏距離。如果Y是n乘-m,其中n是觀測值的數量,m是數據的維數,d是n乘1。 X和Y必須具有相同的列數,但可以有不同數量的行。 X必須具有比列多的行。

這樣你纔會有這樣的事情,你可以用歐幾里德距離馬氏比較:

X = mvnrnd([0;0],[1 .9;.9 1],100); 
Y = [1 1;1 -1;-1 1;-1 -1]; 

d1 = mahal(Y,X) % Mahalanobis (**it still gives one value**) 
d1 = 
    1.3592 
    21.1013 
    23.8086 
    1.4727 

d2 = sum((Y-repmat(mean(X),4,1)).^2, 2) % Squared Euclidean 
d2 = 
    1.9310 
    1.8821 
    2.1228 
    2.0739 
% if you check the figure it will be easier to understand 
scatter(X(:,1),X(:,2)) 
hold on 
scatter(Y(:,1),Y(:,2),100,d1,'*','LineWidth',2) 
hb = colorbar; 
ylabel(hb,'Mahalanobis Distance') 
legend('X','Y','Location','NW') 

enter image description here

馬氏距離(或「廣義平方INTERPOINT距離」爲它的平方值)也被定義爲具有協方差矩陣S的相同分佈的兩個隨機向量x和y之間的相異性量度:

enter image description here

如果協方差矩陣是單位矩陣,則馬氏距離減少到歐幾里德距離。如果協方差矩陣是對角的,然後將得到的距離度量被稱爲歸一化的歐幾里得距離:

enter image description here

其中Si是對Xi和Yi的在樣品組的標準偏差。