MATLAB:按排序顺序从“eigs”中获取小的特征值

时间:2016-08-19 08:40:23

标签: matlab

例如,eigs(A,k,'sm')返回k个最小幅度的特征值。但是,eigs没有处理这个标志。编辑:eigs(A,k,'sr')负责处理。

A是500乘500稀疏矩阵。如果没有得到eig中的所有特征值,如何有效地得到最小的3个特征值(不是幅度)和eigs的相应特征向量?

这可以通过排序eig中的所有特征值来轻松完成,但由于某些原因我无法使用eig,因为需要很长时间和大量内存才能转换为完整矩阵并计算所有特征值。

编辑:这也可以由eigs(A,k,'sr')完成并自行进行排序。但eigs中有更快的方法或选项吗?

1 个答案:

答案 0 :(得分:0)

除非存在语法错误或者您的矩阵具有所有具有正实部的特征值,否则不应该这样做。这给出了R2016a上正确的负符号最小实部(我猜这是小的意思)特征值。注意,最小的eig是复共轭,而一对只由其负的虚部给出。

A = sprand(100,100,0.5);
[V,D] = eigs(A,3,'sr')