【发布时间】:2014-09-30 03:22:08
【问题描述】:
我目前正在使用命令:[V, D] = eig(X)
其中 V 是特征向量,D 是对角矩阵中的特征值。关于如何创建 Y(对应于 p 个最大特征值的特征向量矩阵)的任何想法?
【问题讨论】:
-
如果
p很小,考虑eigs
标签: matlab eigenvector eigenvalue
我目前正在使用命令:[V, D] = eig(X)
其中 V 是特征向量,D 是对角矩阵中的特征值。关于如何创建 Y(对应于 p 个最大特征值的特征向量矩阵)的任何想法?
【问题讨论】:
p 很小,考虑eigs
标签: matlab eigenvector eigenvalue
一种方法是 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
【讨论】:
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() 函数来测量特征值的“大小”。请注意,您可能更喜欢使用其他功能。
【讨论】:
[~, IX] = sort(abs(diag(D))) 或者更确切地说是 [V,D] = eig(X,'vector'); [~, IX] = sort(abs(D))?