2014-09-30 31 views

回答

1

一種方法是eigs:

[V,D] = eigs(A,size(A,1)-1) 

第二種方式是進行排序:

if ~issorted(diag(D)) 
    [V,D] = eig(A); 
    [D,I] = sort(diag(D)); 
    V = V(:, I); 
end 
0
p=3; %'as a example say we want the eigenvectors for the 3 largest eigenvalues' 

X=rand(4); %'take whatever matrix 4x4 for the example' 

[V, D] = eig(X); 

for ind=1:length(D) 
    d(ind)=abs(D(ind,ind)); 
end 

[B,IX] = sort(d,'descend'); 

Y = V(:,IX(1:p)); 

Y的列包含從左到右按降序排列的特徵向量對應的特徵向量。 請注意,我使用abs()函數來測量特徵值的「大小」。請注意,也許你更喜歡使用其他功能。

+0

爲什麼for循環使用,而不僅僅是' [〜,IX] = sort(abs(diag(D)))或者[V,D] = eig(X,'vector'); [〜,IX] = sort(abs(D))'? – Dan 2014-09-30 06:00:09

相關問題