2012-12-21 242 views
2

我想要計算兩個向量a和b之間的Mahalanobis距離。最終,我將在統計算法中將其用作距離度量。我正在使用gsl來實現它們。 mahalanobis距離的公式是sqrt((a-b)'c^-1(a-b)),其中c是協方差矩陣。根據this gsl文檔,它需要兩個數據集並返回一個協方差值。我不知道如何使用它來計算協方差矩陣。 任何幫助表示讚賞。協方差矩陣gsl

謝謝。

回答

3

我想你需要先了解協方差矩陣的測算,第二繼承人的示例代碼,讓你開始

for (i = 0; i < A->size1; i++) { 
     for (j = i; j < A->size2; j++) { 
      a = gsl_matrix_column (A, i); 
      b = gsl_matrix_column (A, j); 
      double cov = gsl_stats_covariance(a.vector.data, a.vector.stride,b.vector.data, b.vector.stride, a.vector.size); 
      gsl_matrix_set (C, i, j, cov); 
     } 
     } 
+0

嘿感謝您的回覆。在這段代碼片段中是數據矩陣?因爲在我的情況下,當我調用這個函數時,我所擁有的只有兩個相同大小的向量。所以,我仍然不確定如何獲得兩個向量之間的協方差矩陣。因爲如果我在a和b之間調用gsl_stats_covariance,我只能得到一個值。 – shaun

+0

yup'A'是一個矩陣,'a'和'b'是矩陣'A'的列。得到的矩陣'C'是您的協方差矩陣..... – pyCthon

+2

不應該是'A-> size2'兩次? size1是行數,並且不循環遍歷行。我也沒有改變,那麼爲什麼你不在外環中分配一個? –