参考链接:Eigen Main Page
Eigen 简介
Eigen是一个C++线性代数模板库,包括矩阵,向量,数值求解器以及相关算法。
Eigen支持任意矩阵大小和矩阵类型、标准数据类型、矩阵分解、几何特征求解、非线性优化、矩阵函数、多项式拟合傅里叶变换等。
Eigen的运行速度非常快,支持的算法也是稳定求解的。
Eigen 文档路线
简版开始:Getting started guide
长版开始:Long tutorial
所有内容快速索引页面:Quick reference
完整Eigen命名空间(包括了Eigen中定义的所有符号):Eigen Namespace Reference
Extending/Customizing Eigen包括了一些扩展Eigen特征和支持定制标量类型的内容
General topics包括了一些预处理器指令、控制断言、多线程、MKL 支持等一些 Eigen 的内部见解内容。
最后,Eigen还维护了一个非官方支持的模组,这些模块的内容由用户自行构建。
简版开始:Getting started guide
这部分只是个5min的简短教程,就不写了。
长版开始:Long tutorial
长版教程在官方指导的Chapters部分,一共包含四个chapter。
1 矩阵和数组操作(Dense matrix and array manipulation)
1.1 矩阵类(The Matrix class)
Getting started guide模块主要目的是Eigen的快速上手。这部分主要对Eigen中常见的Matrix模板类(Matrix Class)进行说明。Matrix顾名思义就是矩阵,大小为n✖️n,向量(Vector)是形状为1✖️n的矩阵。
1.1.1 Matrix类的参数
Matrix类一共有6个参数,前三个是强制(填写)参数,后三个是默认参数。前三个参数如下:
Matrix<typename Scalar, int RowsAtCompileTime, int ColsAtCompileTime>
其中:
- Scaler:标量,typename表示标量类型
- RowsAtCompileTime, ColsAtCompileTime:分别表示行、列数量
Eigen提供一些便利的类型定义来表示常用的变量,例如,Matrix4f 表示4✖️4方阵(4),矩阵元素类型为float(f):
typedef Matrix<float, 4, 4> Matrix4f;
1.1.2 Vector类
Vector是Matrix的特殊情况,它的行或列中有一个值为1,行为1的矩阵称为列向量,列为1的矩阵称为行向量。列向量(col-vectors)和行向量(row-vectors)的定义分别为:
typedef Matrix<float, 3, 1> Vector3f; // 列向量
typedef Matrix<int, 1, 2> RowVector2i; // 行向量