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