我用一个函数在Matlab的:
[V,D] = eig(C);
我看到,V和d总是排序升序排列。 它总是这样,或者我应该对它们进行排序后,我得到V
和D
值?
我用一个函数在Matlab的:
[V,D] = eig(C);
我看到,V和d总是排序升序排列。 它总是这样,或者我应该对它们进行排序后,我得到V
和D
值?
V不以任何顺序进行排序,除非以对应于相关联的本征值的次序。 但是,也许你没有那个意思。
特征值往往是按降序排列,但这并不放心。 他们往往是为了,因为最大的往往淌独占鳌头的算法。 EIG没有排序在末尾,以确保事实。
我可能会指出eigenshuffle工具,设计上采用特征值问题的一个序列,然后诉诸特征值(和对应的特征向量),所以它们沿着序列完全一致。
如果你真的需要他们肯定是在递减的顺序,然后做一个排序,以确保事实。 请确保您还以相同的顺序向量进行排序。
如果你想保证分拣升值,只是做一个额外的
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)