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