Eigen是可以用来进行
线性代数、矩阵、向量操作等运算的C++库,它里面包含了很多算法。。
简介 {#简介}
-
Eigen 是可以用来进行
线性代数、矩阵、向量操作等运算的C++库,它里面包含了很多算法。当前(2023.1)最高 release 版本: 3.4.0当前官网开发版本已经到了 3.4.90

在 gitlab 上下载的代码可以直接
checkout到这个commit id去 -
Eigen 采用源码的方式提供给用户使用,在使用时只需要包含Eigen的头文件即可进行使用。之所以采用这种方式,是因为
Eigen采用模板方式实现,由于模板函数不支持分离编译,所以只能提供源码而不是动态库的方式供用户使用。 -
Eigen 的定位是矩阵运算,已经被 OpenCV 官方支持,在 C++ 中二者经常协同工作,就像Python 中的 Numpy 和 OpenCV 库的关系一样
获取代码 {#获取代码}
-
从官方仓库中下载代码
-
当前的代码是 master 分支,代码一直在更新,但没有发布稳定的版本,建议切换到 3.4.0 的当前最高版本,而且经过我测试 3.4.0 在一些任务上效率也更高
-
源码准备完毕了,建议将 eigen 本地仓库文件夹加入环境变量
我将该路径设置为环境变量 :
EIGEN_PATH键下的值 -
创建 C++ 工程,建议在 Release 下配置环境、运行代码,因为 Debug 模式下运行实在是太慢了
-
将
EIGEN_PATH添加到附加包含目录就算配置好环境了

- 使用时引入头文件
模块和头文件 {#模块和头文件}
| 模块 | 引入头文件 | 内容 |
|------------|-----------------------------|---------------------------------------------------|
| Core | #include<Eigen/Core> | 包含Matrix和Array类,基础的线性代数运算和数组操作 |
| Geometry | #include<Eigen/Geometry> | 包含旋转,平移,缩放,2维和3维的各种变换 |
| LU | #include<Eigen/LU> | 包含求逆,行列式,LU分解 |
| Cholesky | \#include<Eigen/Cholesky> | 包含LLT和LDLT Cholesky分解 |
| SVD | #include<Eigen/SVD> | 包含SVD分解 |
| QR | #include<Eigen/QR> | 包含QR分解 |
| Sparse | #include<Eigen/Sparse> | 包含稀疏矩阵的存储和运算 |
| Dense | `#include<Eigen/Dense>` | 包含了Core/Geometry/LU/Cholesky/SVD/QR/Eigenvalues模块 |
| Eigen | #include<Eigen/Eigen> | 包含Dense和Sparse。 |
demo {#demo}
- 粘贴如下代码,应该就可以运行了
- 我的输出:
参考资料 {#参考资料}
- https://eigen.tuxfamily.org/index.php?title=Main_Page
- https://www.cnblogs.com/jast/p/4244610.html
- https://blog.csdn.net/s12k39/article/details/108381018
- https://blog.csdn.net/level_code/article/details/122684876
- https://www.jianshu.com/p/931dff3b1b21?tdsourcetag=s_pctim_aiomsg
51工具盒子