2014-07-22 221 views
-1

我在Matlab中計算了我的一個程序中的協方差矩陣。然後最終我想計算馬氏距離,這將需要相同的反算。計算協方差矩陣的逆矩陣導致'Inf'

但是我的協方差矩陣中的條目很小,很多都是零。

,我得到逆時試圖將發現的是該消息:

警告:矩陣是奇異的,以加工精度。

這一切是什麼意思?我該如何繼續下去?請建議我。

問候

普拉香特

+1

當一個矩陣是單數時,這意味着條件數**非常高**。這意味着你的矩陣對其元素的小變化非常敏感。如果你使用它進行任何計算,任何元素的小改變都會導致與前一次輸出相比有很大不同。基本上,你的矩陣是不明確的。你確定你正確計算了距離嗎?你選擇了正確的功能嗎?你確定你正確地預處理了它們嗎?沒有進一步的背景知道你如何提出這個矩陣,我們不能真正幫助你進一步。 – rayryeng

+0

我會再次在那部分工作。如你所說,然後會帶來任何其他疑問。謝謝 – prashanth

回答

0

如果矩陣是singular這意味着它是非可逆的。行列式爲0,這意味着矩陣中至少有兩行是線性相關的,例如[0.5,0.5;0.5,0.5][1,0;0,0]。但是,您確定協方差矩陣是否正確計算?協方差矩陣應該有2個線性相關的行是極不可能的,因爲一組樣本的協方差應該與其自身有很高的協方差。但是,2個幾乎相似的進程可能會導致此問題。試試:

a = randn(1000,1); 
b = randn(1000,1); 
covAB = cov(a,b); 
covAA = cov(a,a); 
covAB^-1 
covAA^-1