我有一個12x202矩陣(12個實例有202個特徵)。我想計算每個12個實例之間的馬氏距離,但似乎列數不能比實例數(行數)大很多。 (我不得不使用沒有問題的計算12x11矩陣但超過11個特徵的距離會導致錯誤的MATLAB要麼linkage(X,'ward','mahalanobis');
或mahal(X,X);
或pdist2(X,X,'mahalanobis');
)矩陣(mxn)的馬氏距離m << n
1
A
回答
0
如果在matlab documentation對泰姬陵的功能看,它說:
X和Y必須具有相同的列數,但可以具有不同的 行數。 X必須具有比列多的行。
我在統計上不太好,所以我不確定這個條件爲什麼重要,但我想這是出於效率的原因,還有12個措施數量太少,所以考慮有更多的措施。
,你可以做的事情是計算mahalabonis距離自己,這是很容易得到在同一文檔,讓沒有爲mahalabanois距離更好的計算formaula,也是例子:
馬氏距離也稱爲二次距離。它測量 兩組對象的分離。假設我們有兩個組 與手段,馬氏距離由以下
給出所以對於不同的組,而不是相同的。
在任何情況下,你可以這樣做:
function MD = my_MahalanobisDistance(X, Y)
[nX, mX] = size(X);
[nY, mY] = size(Y);
n = nX + nY;
if(mX ~= mY)
disp('Columns in X must be same as in Y')
else
xDiff = mean(X) - mean(Y);
cX = my_covariance(X);
cY = my_covariance(Y);
pC = nX/n*cX + nY/n*cY;
MD = sqrt(xDiff * inv(pC) * xDiff');
end
和協方差:
function C = my_covariance(X)
[n,m] = size(X);
Xc = X -repmat(mean(X),n,1);
C = Xc'* Xc/n;
我希望這可以幫助你
相關問題
- 1. 馬氏距離
- 2. 計算馬氏距離
- 3. 向量作爲在給定一個矩陣<code>A</code>(<code>mxn</code>)矩陣
- 4. 由N×M矩陣和NXC矩陣比較創建真/假矩陣(其中,c <= M)
- 5. 每對觀測值的馬氏距離
- 6. 用C#計算馬氏距離
- 7. 距離矩陣
- 8. 從MXN矩陣生成2^N-1個矩陣數
- 9. 爲N×M矩陣穿越
- 10. 從矩陣n×m個
- 11. 查找m×n矩陣
- 12. K-手段和馬氏距離
- 13. 一維馬氏距離在Python
- 14. 矩陣,距離,javascript
- 15. 歐氏距離
- 16. 使用mat2cell將MxN矩陣劃分爲1xN大小的M矩陣
- 17. 關於距離n * n矩陣的算法問題
- 18. python hcluster,距離矩陣和濃縮距離矩陣
- 19. 歐氏距離
- 20. 歐氏距離
- 21. 要將m×n矩陣轉換爲1×n矩陣
- 22. 如何通過n矩陣每n由M矩陣
- 23. 距離矩陣中的R
- 24. 初始化矢量<vector<int>>數據(M,矢量<int>(n))的一類矩陣墊內(M,N)
- 25. 成對距離矩陣
- 26. dim(m×n)的matlab輸入空間分離矩陣
- 27. matlab中的矩陣變化(m x n)
- 28. C++查找N * M的矩陣
- 29. 用(M,N)的右手大小矩陣
- 30. 隨機m×n矩陣的randperm子集
你能做出[最低工作示例](請http://stackoverflow.com/help/mcve)? –