本文最后更新于:2024年5月7日 下午
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 库的关系一样
获取代码
-
从官方仓库中下载代码
1
git clone git@gitlab.com:libeigen/eigen.git
-
当前的代码是 master 分支,代码一直在更新,但没有发布稳定的版本,建议切换到 3.4.0 的当前最高版本,而且经过我测试 3.4.0 在一些任务上效率也更高
1
git checkout 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
- 粘贴如下代码,应该就可以运行了
1 |
|
- 我的输出:
1 |
|
参考资料
- 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
“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”
微信支付
支付宝支付