51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

C++ 矩阵运算库 Eigen

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 库的关系一样

  • 官网链接:https://eigen.tuxfamily.org/index.php?title=Main_Page

  • 仓库链接:https://gitlab.com/libeigen/eigen

获取代码 {#获取代码}

  • 官方仓库中下载代码

  • 当前的代码是 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://www.zywvvd.com/notes/coding/cpp/eigen/eigen/

赞(0)
未经允许不得转载:工具盒子 » C++ 矩阵运算库 Eigen