Matlab eig是否总是返回排序值?

kam*_*aci 13 matlab matrix linear-algebra eigenvalue eigenvector

我在Matlab上使用了一个函数:

[V,D] = eig(C);
Run Code Online (Sandbox Code Playgroud)

我看到V和D总是按升序排序.它是否总是那样,或者我应该在获得VD价值后对它们进行排序?

Rod*_*uis 32

如果您想保证排序升序值,只需做额外的

if ~issorted(diag(D))
    [V,D] = eig(A);
    [D,I] = sort(diag(D));
    V = V(:, I);
end
Run Code Online (Sandbox Code Playgroud)

按照你想要的方式对它们进行排序.

或者,使用eigs:

[V,D] = eigs(A,size(A,1)-1)
Run Code Online (Sandbox Code Playgroud)

  • @kamaci不是我在抱怨,但为什么你会接受*我的答案,而不是木片的*更好*答案? (4认同)

小智 24

V不按任何顺序排序,除了对应于相关特征值的顺序.但也许你并不是那个意思.

特征值TEND按降序排列,但这根本不确定.它们往往是有序的,因为最大的往往会从算法中涓涓细流.Eig最后没有确定这一事实.

我可能会指出eigenshuffle工具,设计用于获取一系列特征问题,然后求解特征值(和相应的特征向量),使它们沿序列一致.

如果你确实需要它们按降序排列,那么就做一个确保这个事实.确保您还以相同的顺序对向量进行排序.