在MATLAB中,如何提取对应于p个最大特征值的p个特征向量?

时间:2014-09-30 03:22:08

标签: matlab eigenvector eigenvalue

我目前正在使用命令:[V,D] = eig(X)

其中V是特征向量,D是对角矩阵中的特征值。关于如何创建Y的任何想法,一个对应于p个最大特征值的特征向量矩阵?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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()函数来测量" size"特征值。请注意,您可能更喜欢使用其他功能。