分享

C++ Eigen库计算矩阵特征值及特征向量

 imelee 2017-09-22

Eigen库的配置比较容易,可以参考博客http://blog.csdn.net/abcjennifer/article/details/7781936中的相关内容。关于Eigen库的矩阵+-×运算可参考:http://blog.csdn.net/augusdi/article/details/12907341中的相关内容。本文主要讲解利用Eigen库计算矩阵的特征值及特征向量并与Matlab计算结果进行比较。

C++Eigen库代码

#include <iostream>
#include <Eigen/Dense>
#include <Eigen/Eigenvalues>
using namespace Eigen;
using namespace std;

void Eig()
{
    Matrix3d A;
    A << 1, 2, 3, 4, 5, 6, 7, 8, 9;
    cout << "Here is a 3x3 matrix, A:" << endl << A << endl << endl;
    EigenSolver<Matrix3d> es(A);

    Matrix3d D = es.pseudoEigenvalueMatrix();
    Matrix3d V = es.pseudoEigenvectors();
    cout << "The pseudo-eigenvalue matrix D is:" << endl << D << endl;
    cout << "The pseudo-eigenvector matrix V is:" << endl << V << endl;
    cout << "Finally, V * D * V^(-1) = " << endl << V * D * V.inverse() << endl;
}
int main()
{

    Eig();

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

计算结果:


这里写图片描述

Matlab 代码

clear all
clc
A = [1 2 3;4 5 6;7 8 9]
[V,D] = eig(A)
  • 1
  • 2
  • 3
  • 4

Matlab计算结果


这里写图片描述

结语

本人是在实验中利用Eigen库求取最小特征值对应特征向量做PCA分析时使用,曾经再不知道有Eigen库的情况下自己写过矩阵相关运算的模板类,现在接触到Eigen库,就把困扰过自己的问题今天做一个小小总结。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多