用matlab如何求矩阵的前k个最大特征值

2024-11-27 21:49:03
推荐回答(2个)
回答1:

可以试试 eigs,
这个函数一般返回 6个最大特征值及 相应特征向量
不过它 要求矩阵是大型稀疏阵

如果你要求前k个,可以做个函数

function varargout = lun6(A, k)

clc;

if nargin == 0

A = [1 3 7;3 8 9;5 4 6];

k = 2;

end

[V, D] = eig(A);

D = diag(D);

[D, I] = sort(D, 'descend');

if k > length(D)

k = length(D);

end

varargout(1) = {D(1 : k)};

varargout(2) = {V(:, I(1 : k))};

fprintf('\n The k maximum eig is : \n');

celldisp(varargout(1));

fprintf('\n The k eig colum is : \n');

celldisp(varargout(2));

回答2:

用eigs函数就可以,下面是一个示例:

k = 3;%前k个最大特征
A = magic(5);%随便生成一个矩阵
d = eigs(A,k);%求A的k个最大特征值
disp('k个最大特征值')
disp(d)