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

来源:互联网 发布:小熊相机软件 编辑:程序博客网 时间:2024/06/06 01:17

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();}

计算结果:
这里写图片描述

Matlab 代码

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

Matlab计算结果
这里写图片描述

结语

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

0 0
原创粉丝点击