我在Matlab使用了一个函数:
[V,D] = eig(C);
我看到V和D总是按升序排序。它是否总是那样,或者我应该在获得V
和D
值后对它们进行排序?
答案 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工具,设计用于获取一系列特征问题,然后求解特征值(和相应的特征向量),使它们沿着序列保持一致。
如果你确实需要它们按降序排列,那么请做一个确保这个事实。确保您也按相同顺序对矢量进行排序。