原文:Eigen官网-Getting started
Eigen 是一个基于C++的线性代数库,其中实现大量常用的线性代数算法,包括常规矩阵计算,矩阵变换,矩阵分解,矩阵块操作。Eigen 广泛地应用在开源项目中,例如OpenCV,PCL(Point Cloud Library),ROS等。其实Eigen中算法都可以在matlab中找到,但是由于matlab是半开源的。所以,如果想在自己的项目中使用,还是要义无反顾地选择Eigen。Eigen目前的版本是3.3.7(2019.12.09)。
Eigen只包含头文件,因此它不需要实现编译,只需要你include到你的项目,指定好Eigen的头文件路径,编译项目即可。而且跨平台,当然这是必须的。
模块和头文件
Eigen库被分为一个Core模块和其他一些模块,每个模块有一些相应的头文件。 为了便于引用,Dense模块整合了一系列模块;Eigen模块整合了所有模块。一般情况下,include<Eigen/Dense> 就够了。
Module | Header file | Contents |
---|---|---|
Core | #include <Eigen/Core> | Matrix和Array类,基础的线性代数运算和数组操作 |
Geometry | #include <Eigen/Geometry> | 旋转、平移、缩放、2维和3维的各种变换 |
LU | #include <Eigen/LU> | 求逆,行列式,LU分解 |
Cholesky | #include <Eigen/Cholesky> | LLT和LDLT Cholesky分解 |
Householder | #include <Eigen/Householder> | 豪斯霍尔德变换,用于线性代数运算 |
SVD | #include <Eigen/SVD> | SVD分解 |
QR | #include <Eigen/QR> | QR分解 |
Eigenvalues | <include <Eigen/Eigenvalues> | 特征值,特征向量分解 |
Sparse | #include <Eigen/Sparse> | 稀疏矩阵的存储和一些基本的线性运算 |
- | #include <Eigen/Dense> | 包含了Core/Geometry/LU/Cholesky/SVD/QR/Eigenvalues模块 |
- | #include <Eigen/Eigen> | 包括Dense和Sparse(整个Eigen库) |
一个简单的例子
#include <iostream>
#include