В настоящее время я использую команду: [V, D] = eig (X)

Где V - собственные векторы, а D - собственные значения в диагональной матрице. Есть идеи, как я могу создать Y, матрицу собственных векторов, соответствующую p наибольшим собственным значениям?

1
user3457834 30 Сен 2014 в 07:22

2 ответа

Лучший ответ

Один из способов - 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
lakesh 30 Сен 2014 в 06:42
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
Katerl3s 30 Сен 2014 в 05:17