请问Matlab的EIG总是返回排序的值?(Does Matlab eig always retur

2019-06-21 13:01发布

我用一个函数在Matlab的:

[V,D] = eig(C);

我看到,V和d总是排序升序排列。 它总是这样,或者我应该对它们进行排序后,我得到VD值?

Answer 1:

V不以任何顺序进行排序,除非以对应于相关联的本征值的次序。 但是,也许你没有那个意思。

特征值往往是按降序排列,但这并不放心。 他们往往是为了,因为最大的往往淌独占鳌头的算法。 EIG没有排序在末尾,以确保事实。

我可能会指出eigenshuffle工具,设计上采用特征值问题的一个序列,然后诉诸特征值(和对应的特征向量),所以它们沿着序列完全一致。

如果你真的需要他们肯定是在递减的顺序,然后做一个排序,以确保事实。 请确保您还以相同的顺序向量进行排序。



Answer 2:

如果你想保证分拣升值,只是做一个额外的

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)


文章来源: Does Matlab eig always returns sorted values?