对从 Eigen 获得的特征值和特征向量进行排序的有效方法

用户929304

我正在使用 Eigen 来求解对称矩阵的特征系统,m,示例如下:

#include <iostream>
#include <Eigen/Dense>
#include <Eigen/Eigenvalues>
using namespace std;
using namespace Eigen;
int main()
{
  Matrix3f m(3,3);
  EigenSolver<Matrix3f> es;
  m(0,0) = -0.386087;
  m(1,1) = -0.390147;
  m(2,2) = 0.776234;
  m(0,1) = 0.00813956;
  m(0,2) = 0.0781361;
  m(1,0) = 0.0781361;
  m(1,2) = 0.0986476;
  m(2,0) = 0.0781361;
  m(2,1) = 0.0986476;
  es.compute(m,true);
  cout << "matrix is: " << m << endl;
  cout << "The eigenvalues of A are: " << es.eigenvalues() << endl;
  cout << "The eigenvalues of A are: " << es.eigenvectors() << endl;
}

输出是:

matrix is:  -0.386087 0.00813956  0.0781361
0.00813956  -0.390147  0.0986476
 0.0781361  0.0986476   0.776234
The eigenvalues of A are: (-0.391002,0)
 (0.789765,0)
(-0.398762,0)
The eigenvalues of A are:   (0.976246,0) (-0.0666485,0)   (0.206158,0)
  (0.200429,0) (-0.0835865,0)  (-0.976136,0)
  (-0.08229,0)  (-0.994269,0)  (0.0682429,0)

问题:

  1. 知道我的矩阵是对称的,这是对 EigenSolver 的有效使用吗?

  2. 我怎样才能对特征值进行排序并相应地对特征向量进行排序?(最终提取最大特征值和相应的 vec)可以做一个类似 Python 中常见的构造吗?

即:

idx = eigenValues.argsort()[::-1]   
eigenValues = eigenValues[idx]
eigenVectors = eigenVectors[:,idx]
奇茨
  1. 知道我的矩阵是对称的,这是对 EigenSolver 的有效使用吗?

不,你应该SelfAdjointEigenSolver在这种情况下使用:http : //eigen.tuxfamily.org/dox/classEigen_1_1SelfAdjointEigenSolver.html

  1. 我怎样才能对特征值进行排序并相应地对特征向量进行排序?(最终提取最大特征值和相应的 vec)可以做一个类似 Python 中常见的构造吗?

SelfAdjointEigenSolver已排序的特征值(从最低到最高),即以获得最高的特征值/矢量,你需要采取的最后一个。

在这里可以对特征值进行排序,因为所有特征值都保证为实值(对于非对称 EigenSolver 不能保证)。另一个优点是保证特征向量形成正交正态基(即,相应的矩阵是酉/正交的)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

eigen()和正确的特征向量

来自分类Dev

排序特征值和对应的特征向量

来自分类Dev

快速有效地计算已知特征值的特征向量

来自分类Dev

特征向量*标量+向量*标量的未定义行为-> libigl / external / eigen和其他特征冲突

来自分类Dev

使用eigen3 / sparse的稀疏特征值

来自分类Dev

使用Eigen3的稀疏矩阵的特征值

来自分类Dev

查找图像特征向量和特征值

来自分类Dev

numpy特征值和特征向量如何计算

来自分类Dev

计算特征值和特征向量的Scipy问题

来自分类Dev

PCA输出特征向量和特征值

来自分类Dev

如何快速准确地获得特征值和特征向量?

来自分类Dev

如何在Matlab中获得给定矩阵和特征值的特征向量?

来自分类Dev

如何从特征向量特征值获得标准偏差和方差比例

来自分类Dev

如何找到没有numpy和scipy的特征向量和特征值?

来自分类Dev

什么是最快的方法来计算2D实对称矩阵的特征值和特征向量

来自分类Dev

使用LAPACK求解特征值错误的特征向量

来自分类Dev

寻找对应于最小特征值的特征向量

来自分类Dev

计算随机矩阵的特征值/特征向量

来自分类Dev

GSL 复数矩阵 - 特征值/特征向量

来自分类Dev

C ++中最大的特征值(和相应的特征向量)

来自分类Dev

使用CUDA 7.0 RC的cusolver计算特征值和特征向量

来自分类Dev

numpy的总是很复杂的特征值和特征向量错

来自分类Dev

实对称矩阵的最正特征值和对应的特征向量

来自分类Dev

C ++中最大的特征值(和相应的特征向量)

来自分类Dev

在 sympy 中查找特征值和特征向量返回空括号

来自分类Dev

在Eigen中进行重塑功能

来自分类Dev

如何与 Eigen 进行元素比较?

来自分类Dev

为什么特征向量和相应特征值的乘积不等于原始矩阵和特征向量的乘积?

来自分类Dev

如何在C ++向量(Eigen)中获得最大的n值?

Related 相关文章

  1. 1

    eigen()和正确的特征向量

  2. 2

    排序特征值和对应的特征向量

  3. 3

    快速有效地计算已知特征值的特征向量

  4. 4

    特征向量*标量+向量*标量的未定义行为-> libigl / external / eigen和其他特征冲突

  5. 5

    使用eigen3 / sparse的稀疏特征值

  6. 6

    使用Eigen3的稀疏矩阵的特征值

  7. 7

    查找图像特征向量和特征值

  8. 8

    numpy特征值和特征向量如何计算

  9. 9

    计算特征值和特征向量的Scipy问题

  10. 10

    PCA输出特征向量和特征值

  11. 11

    如何快速准确地获得特征值和特征向量?

  12. 12

    如何在Matlab中获得给定矩阵和特征值的特征向量?

  13. 13

    如何从特征向量特征值获得标准偏差和方差比例

  14. 14

    如何找到没有numpy和scipy的特征向量和特征值?

  15. 15

    什么是最快的方法来计算2D实对称矩阵的特征值和特征向量

  16. 16

    使用LAPACK求解特征值错误的特征向量

  17. 17

    寻找对应于最小特征值的特征向量

  18. 18

    计算随机矩阵的特征值/特征向量

  19. 19

    GSL 复数矩阵 - 特征值/特征向量

  20. 20

    C ++中最大的特征值(和相应的特征向量)

  21. 21

    使用CUDA 7.0 RC的cusolver计算特征值和特征向量

  22. 22

    numpy的总是很复杂的特征值和特征向量错

  23. 23

    实对称矩阵的最正特征值和对应的特征向量

  24. 24

    C ++中最大的特征值(和相应的特征向量)

  25. 25

    在 sympy 中查找特征值和特征向量返回空括号

  26. 26

    在Eigen中进行重塑功能

  27. 27

    如何与 Eigen 进行元素比较?

  28. 28

    为什么特征向量和相应特征值的乘积不等于原始矩阵和特征向量的乘积?

  29. 29

    如何在C ++向量(Eigen)中获得最大的n值?

热门标签

归档