大家好,欢迎来到IT知识分享网。
文章目录
1. Eigen
1.1.1 Eigen简介
Eigen是用于线性代数的C++模板库:矩阵、向量、数值求解器和相关算法。
- Eigen官方文档:http://eigen.tuxfamily.org/
- Eigen下载地址:https://gitlab.com/libeigen/eigen
1.1.2 Eigen文件结构
Eigen库分为核心模块和额外模块两个部分,Eigen和Dense头文件方便的同时包含了几个头文件可以供使用。具体Eigen库模块说明如下表:
| Module | Header file | Contents |
|---|---|---|
| Core | #include <Eigen/Core> | Matrix and Array classes, basic linear algebra (including triangular and selfadjoint products), array manipulation
有关矩阵和数组的类,由基本的线性代数(包含 三角形和自伴乘积相关),还有相应对数组的操作。 |
| Geometry | #include <Eigen/Geometry> | Transform, Translation, Scaling, Rotation2D and 3D rotations (Quaternion, AngleAxis)
几何学的类,有关转换、平移、进位制、2d旋转、3D旋转(四元组和角轴相关) |
| LU | #include <Eigen/LU> | Inverse, determinant, LU decompositions with solver (FullPivLU, PartialPivLU)
逻辑单元的类,有关求逆,求行列式,LU分解解算器(FullPivLU,PartialPivLU) |
| Cholesky | #include <Eigen/Cholesky> | LLT and LDLT Cholesky factorization with solver
包含LLT和LDLT的Cholesky因式分解法(Cholesky分解是把一个对称正定的矩阵表示成一个下三角矩阵L和其转置的乘积的分解) |
| Householder | #include <Eigen/Householder> | Householder transformations; this module is used by several linear algebra modules
Householder变换,这个模块供几何线性代数模块使用 |
| SVD | #include <Eigen/SVD> | SVD decompositions with least-squares solver (JacobiSVD, BDCSVD)
奇异值分解,最小二乘解算器解决奇异值分解 |
| QR | #include <Eigen/QR> | QR decomposition with solver (HouseholderQR, ColPivHouseholderQR, FullPivHouseholderQR)
QR分解求解,三种方法:HouseholderQR、ColPivHouseholderQR,FullPivhouseholderQR |
| Eigenvalues | #include <Eigen/Eigenvalues> | Eigenvalue, eigenvector decompositions (EigenSolver, SelfAdjointEigenSolver, ComplexEigenSolver)
特征值和特征向量分解的方法:EigenSolver、SelfAdjointEigenSolver、ComplexEigenSolver |
| Sparse | #include <Eigen/Sparse> | Sparse matrix storage and related basic linear algebra (SparseMatrix, SparseVector) (see Quick reference guide for sparse matrices for details on sparse modules)
稀疏矩阵相关类,对于系数矩阵的存储及相关线性代数 |
| #include <Eigen/Dense> | Includes Core, Geometry, LU, Cholesky, SVD, QR, and Eigenvalues header files
包含:core、Geometry、LU、Cholesky、SVD、QR和Eigenvalues模块(头文件) | |
| #include <Eigen/Eigen> | Includes Dense and Sparse header files (the whole Eigen library)
包含上述所有模块(头文件) |
2. Eigen使用
2.1 使用源代码
2.2 生成动态库
3. API接口
Eigen::Quaternionf
简介:单精度四元数类型
Eigen::Quaternionf(w,x,y,z); Eigen::Quaternionf.w(); Eigen::Quaternionf.x(); Eigen::Quaternionf.y(); Eigen::Quaternionf.z();
//姿态的矩阵形式转四元数 Eigen::Quaternionf(Eigen::Matrix3f())
Eigen::Vector3f
//对于Eigen::Vector3f,以下输出内容一样 Eigen::Vector3f rotateVec; rotateVec >> 1,2,3; std::cout << rotateVec(0) << rotateVec(1) << rotateVec(2) << std::endl; std::cout << rotateVec.x() << rotateVec.y() << rotateVec.z() << std::endl; //注:若rotateVec.w()则报错。
Eigen::AngleAxisf
简介:单精度角轴型
Eigen::Vector3f ea = eulerAngles(0, 1, 2); Eigen::AngleAxisf rx = AngleAxisf(ea[0], Vector3f::Unitx()); Eigen::AngleAxisf ry = AngleAxisf(ea[1], Vector3f::Unity()); Eigen::AngleAxisf rz = AngleAxisf(ea[2], Vector3f::Unitz());
Eigen::Matrix3f
//四元数转姿态的矩阵形式 Eigen::Matrix3f(Eigen::Quaternionf()) switch (sequence) { case(XYZ): Eigen::Matrix3f mat = (rx * ry * rz); case(ZYZ): Eigen::Matrix3f mat = (rz * ry * rz); }
Eigen::Matrix4f
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/121168.html