我在Matlab使用了一个函数:
[V,D] = eig(C);
我看到 V 和 D 总是按升序排序。它总是这样还是我应该在获得V
和D
值后对它们进行排序?
如果你想保证升序值的排序,只需做一个额外的操作
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 不按任何顺序排序,除非对应于相关特征值的顺序。 但也许你不是那个意思。
特征值倾向于降序排列,但这根本不是保证的。它们往往是有序的,因为最大的倾向于从顶部的算法中涓涓细流。艾格在最后没有排序来确保这一事实。
我可能会指出特征随机工具,该工具旨在获取一系列特征问题,然后重新调整特征值(和相应的特征向量),以便它们沿序列保持一致。
如果你真的需要它们,那么做一个排序来确保这一事实。确保还按相同的顺序对向量进行排序。