2014-03-25 30 views
2

我想做出類似的圖來此上的圖片給出: enter image description here如何找到特徵值非二次矩陣

我使用費舍爾虹膜數據,並採用PCA,以減少維數。 這是代碼:

load fisheriris 
[pc,score,latent,tsquare,explained,mu] = princomp(meas); 

我猜的特徵值在潛伏性的給予,那就說明我只有四個特性,並減少約數據。

我的問題是如何顯示原始矩陣的所有特徵值,這不是二次的(150x4)?請幫忙!非常感謝您提前!

+0

那麼問題是什麼呢?你不能指望一個150×4矩陣有超過4個特徵值 – patrik

+1

她想確定非矩陣矩陣的特徵值,這當然不存在,而不是術語特徵值我們有奇異值,我們可以通過svd分解找到例如 –

+0

當然,但仍然不超過4個奇異值。順便說一下,順便說一句,可以發現與svd +1 – patrik

回答

6

簡短(而且沒用)的答案是[V,D] eig(_)函數爲您提供了特徵向量和特徵值。不過,恐怕我對你有壞消息。特徵值和特徵向量僅存在於矩陣中,因此您的150x4矩陣的特徵向量有no

所有不會丟失。 PCA實際上使用協方差矩陣的特徵值,而不是原始矩陣的特徵值,並且協方差矩陣總是平方的。也就是說,如果您有矩陣A,則協方差矩陣爲AA T

協方差矩陣不僅是平方的,它是對稱的。這很好,因爲矩陣的奇異值與它的協方差矩陣的特徵值有關。檢查以下Matlab代碼:

A = [10 20 35; 5 7 9]; % A rectangular matrix 
X = A*A';    % The covariance matrix of A 

[V, D] = eig(X);  % Get the eigenvectors and eigenvalues of the covariance matrix 
[U,S,W] = svd(A);  % Get the singular values of the original matrix 

V是包含特徵向量的矩陣,D包含特徵值。現在,以下關係:

SS Ť〜d

ü〜Ⅴ類

我用 '〜' 以指示而它們是 「相等」,符號和順序可以變化。對於特徵向量沒有「正確的」順序或符號,所以任一個都是有效的。不幸的是,你將只有四個特徵(除非你的數組本來就是相反的)。

+0

非常好的迴應!非常感謝!!! – user19565