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

时间:2012-12-04 13:46:50

标签: matlab matrix linear-algebra eigenvector eigenvalue

我在Matlab使用了一个函数:

[V,D] = eig(C);

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

2 个答案:

答案 0 :(得分:32)

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

if ~issorted(diag(D))
    [V,D] = eig(A);
    [D,I] = sort(diag(D));
    V = V(:, I);
end

按照您想要的方式对它们进行排序。

或者,使用eigs

[V,D] = eigs(A,size(A,1)-1)

答案 1 :(得分:24)

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

特征值TEND按降序排列,但这根本不可靠。它们往往是有序的,因为最大的往往会从算法中涓涓细流。为了确保这一事实,Eig最终没有任何排序。

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

如果你确实需要它们按降序排列,那么请做一个确保这个事实。确保您也按相同顺序对矢量进行排序。