前言
Eigen官方教程:Eigen
本文编译环境为 Windows + Visual Studio
1. 什么是 Eigen
Eigen 是C++语言里的一个开源模版库,支持线性代数运算,矩阵和矢量运算,数值分析及其相关的算法。
2. Eigen 安装、库和头文件
2.1 安装
下载并解压好 eigen3 文件夹后,在 VS [包含文件目录] 中包含 …/eigen3 即可使用.
2.2 库和头文件
模块 | 头文件 | 备注 |
---|---|---|
Eigen | #include< Eigen/Eigen > | 整个Eigen库 |
Dense | #include< Eigen/Dense > | 包含 Core/Geometry/LU/Cholesky/SVD/QR/Eigenvalues 模块 |
Sparse | #include< Eigen/Sparse > | 稀疏矩阵的存储及线性运算 |
Core | #include< Eigen/Core > | Matrix和Array类、线性运算和数组操作 |
Geometry | #include< Eigen/Geometry > | 旋转、平移、缩放、2D&3D的变换 |
LU | #include< Eigen/LU > | 求逆、行列式、LU分解 |
Cholesky | #include< Eigen/Cholesky > | LLT和LDLT Cholesky 分解 |
SVD | #include< Eigen/SVD > | SVD分解 |
QR | #include< Eigen/QR > | QR分解 |
Eigenvalues | #include< Eigen/Eigenvalues > | 特征值、特征矢量分解 |
Householder | #include< Eigen/Householder> | Householder变换,用于线性运算 |
3. 简单使用
#include <iostream>
#include <Eigen/Dense>
using namespace std;
using Eigen::MatrixXd;
int main()
{
MatrixXd m(2,2); // MatrixXd表示是任意尺寸的矩阵ixj,
// m(2,2)代表一个2x2的方块矩阵
m(0,0) = 3; // 代表矩阵元素a11
m(1,0) = 2.5; // a21
m(0,1) = -1; // a12
m(1,1) = m(1,0) + m(0,1); // a22=a21+a12
cout << m << endl; // 输出矩阵m
}