Matlab eig 是否总是返回排序值



我在Matlab使用了一个函数:

[V,D] = eig(C);

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

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

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)

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

特征值倾向于降序排列,但这根本不是保证的。它们往往是有序的,因为最大的倾向于从顶部的算法中涓涓细流。艾格在最后没有排序来确保这一事实。

我可能会指出特征随机工具,该工具旨在获取一系列特征问题,然后重新调整特征值(和相应的特征向量),以便它们沿序列保持一致。

如果你真的需要它们,那么做一个排序来确保这一事实。确保还按相同的顺序对向量进行排序。

最新更新