我在 Matlab 中使用了一个函数:
[V,D] = eig(C);
我看到 V 和 D 总是按升序排序。它总是这样还是应该在我得到V
和D
重视之后对它们进行排序?
我在 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 不按任何顺序排序,除了对应于相关特征值的顺序。但也许你不是那个意思。
特征值倾向于按降序排列,但这根本不能保证。它们往往是有序的,因为最大的往往会从顶部的算法中流出。Eig 最终无法确保这一事实。
我可能会指出eigenshuffle工具,该工具旨在获取一系列特征问题,然后再利用特征值(和相应的特征向量),使它们沿序列保持一致。
如果您确实确实需要它们以降序排列,那么请进行排序以确保这一事实。确保您还以相同的顺序对向量进行排序。