深入浅出(十四)Eigen库

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库模块说明如下表:

ModuleHeader fileContents
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

参考文献
[1] 快速入门矩阵运算——开源库Eigen

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小老鼠不吃猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值