可以试试 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));
用eigs函数就可以,下面是一个示例:
k = 3;%前k个最大特征
A = magic(5);%随便生成一个矩阵
d = eigs(A,k);%求A的k个最大特征值
disp('k个最大特征值')
disp(d)