Eigen——C++矩阵运算库
1.Eigen是什么?
Eigen是一个基于C++模板的开源库,支持线性代数,矩阵和矢量运算,数值分析及其相关的算法。
2.下载配置
-
官网:Eigen官网,下载解压缩可以重命名为eigen3。官网介绍使用Eigen,只需要下载它的源码,事实上,Eigen子目录中的头文件是使用Eigen编译程序所需的惟一文件。所有平台的头文件都是相同的。不需要使用CMake或安装任何东西。
-
写一个简单的项目,包含头文件。注:Eigen使用源代码方式提供用户使用,在使用时只需要包含Eigen头文件即可使用。
#include <iostream> #include <Eigen/Dense> using Eigen::MatrixXd; int main() { MatrixXd m(2,2); //MatrixXd类型,代表一个任意大小的矩阵 m(0,0) = 3; m(1,0) = 2.5; m(0,1) = -1; m(1,1) = m(1,0) + m(0,1); std::cout << m << std::endl; }
-
在项目——属性——C/C++——常规——附加包含目录添加该库位置就好了,这个操作是指包含头文件,没有链接到的库。在编译上述程序时,只需要一个操作,即让编译器能够找到Eigen的头文件。放置Eigen源代码的目录必须位于包含路径中。
官网安装和配置说明(包含使用的简单介绍):Getting started
图文详细:vs2013配置Eigen库
3.使用
官网的快速参考指南:Quick reference guide
3.1 模块和头文件
Eigen库被分为一个核心模块和几个别的模块,每个模块有一个对应的头文件,使用该模块需要包含对应头文件。还提供了Dense和Eigen头文件方便同时使用多个模块。
模型 | 头文件 | 说明 |
---|---|---|
Core | #include <Eigen/Core> |
包含Matrix和Array类,基础的线性代数运算和数组操作。 |
Geometry | #include <Eigen/Geometry> |
包括平移、缩放、2D\3D旋转变换、四元数、轴旋转变换 |
LU | #include <Eigen/LU> |
包含求逆,行列式,LU分解 |
Cholesky | #include <Eigen/Cholesky> |
包含LLT和LDLT Cholesky分解 |
Householder | #include <Eigen/Householder> |
householder变换,此模块由几个线性代数模块使用 |
SVD | #include <Eigen/SVD> |
奇异值分解 |
QR | #include <Eigen/QR> |
QR分解 |
Eigenvalues | #include <Eigen/Eigenvalues> |
特征值、特征向量 |
Sparse | #include <Eigen/Sparse> |
稀疏矩阵存储及相关的基本线性代数 |
* | #include <Eigen/Eigen> |
包含Dense和Sparse头文件(Eigen全部库) |