深入浅出(十四)Eigen库

深入浅出(十四)Eigen库eigenC 开源矩阵计算库 有关 eigen 的简介 文件结构 API 源代码使用与生成库使用的方法介绍 eigen 库

大家好,欢迎来到IT知识分享网。

1. Eigen

1.1.1 Eigen简介

Eigen是用于线性代数的C++模板库:矩阵向量数值求解器相关算法

  1. Eigen官方文档:http://eigen.tuxfamily.org/
  2. 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

(0)
上一篇 2025-10-25 10:45
下一篇 2025-10-25 11:00

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信