-1
我在Matlab中計算了我的一個程序中的協方差矩陣。然後最終我想計算馬氏距離,這將需要相同的反算。計算協方差矩陣的逆矩陣導致'Inf'
但是我的協方差矩陣中的條目很小,很多都是零。
,我得到逆時試圖將發現的是該消息:
警告:矩陣是奇異的,以加工精度。
這一切是什麼意思?我該如何繼續下去?請建議我。
問候
普拉香特
我在Matlab中計算了我的一個程序中的協方差矩陣。然後最終我想計算馬氏距離,這將需要相同的反算。計算協方差矩陣的逆矩陣導致'Inf'
但是我的協方差矩陣中的條目很小,很多都是零。
,我得到逆時試圖將發現的是該消息:
警告:矩陣是奇異的,以加工精度。
這一切是什麼意思?我該如何繼續下去?請建議我。
問候
普拉香特
如果矩陣是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
當一個矩陣是單數時,這意味着條件數**非常高**。這意味着你的矩陣對其元素的小變化非常敏感。如果你使用它進行任何計算,任何元素的小改變都會導致與前一次輸出相比有很大不同。基本上,你的矩陣是不明確的。你確定你正確計算了距離嗎?你選擇了正確的功能嗎?你確定你正確地預處理了它們嗎?沒有進一步的背景知道你如何提出這個矩陣,我們不能真正幫助你進一步。 – rayryeng
我會再次在那部分工作。如你所說,然後會帶來任何其他疑問。謝謝 – prashanth