美文网首页
2021-01-09利用eigen矩阵基本操作

2021-01-09利用eigen矩阵基本操作

作者: 斯派罗 | 来源:发表于2021-01-09 20:05 被阅读0次

头文件

#include <eigen3/Eigen/core>

#include <eigen3/Eigen/dense>

#include <eigen3/Eigen/Geometry>

//如果想要省略eigen3,需要在CMakeLists.txt文件当中添加:

include_directories("/usr/include/eigen3")

矩阵定义

Eigen::Matrix matrix_name = Eigen::Matrix <double, 3, 4> //知道矩阵的大小3*4大小的矩阵

Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic> matrix_notknow_size;//不知道矩阵的大小 ,这样定义

Eigen::MatrixXd matrix_nSize; //更简单地定义矩阵,不知道矩阵的大小。

矩阵数据格式的变换

matrix_nSize.cast<double>()  //把矩阵数据格式转换成double格式,因为矩阵只能相同格式地相乘。

基本的矩阵操作:转置、求逆、求迹、求和、数乘、行列式

matrix_nSize.transpose() //转置

matrix_nSize.sum() //矩阵各元素求和

matrix_nSize.trace() //求迹

matrix_nSize.inverse() //求逆

10 * matrix_nSize //矩阵数乘,数乘是可以不同类型来做的.

matrix_nSize.determinant() //求行列式

矩阵特征值求解

matrix_real = Eigen::Matrix3d::Random();

matrix_realSymentry = matrix_real.transpose() * matrix_real;//这是一个实对称矩阵

Eigen::SelfAdjointEigenSolver<Eigen::Matrix3d> eigen_solver (matrix_realSymentry) //特征求解器

cout << "Eigen values = " << eigen_solver.eigenvalues() <<endl; //输出特征值

cout << "Eigen vectors = " << eigen_solver.eigenvectors() << endl; //输出特征向量

矩阵QR分解求方程的解

x = matrix_NN.colPivHouseholderQr().solve(v_Nd);

/********************************************************

旋转矩阵、旋转向量、四元数的使用

********************************************************/

旋转向量的定义

Eigen::AngleaAxisd rotation_vector (M_PI/4, Eigen::Matrix3d::Identity())

rotation_matrix = rotation_vector.toRoationMatrix();//把旋转向量转换成旋转矩阵

rotation_matrix = rotation_vector.Matrix();// 另外一种旋转矩阵的表达形式

欧拉角

Eigen::vector3d euler_angles = rotation_matrix.eulerAngles(2, 1, 0);// z y x 顺序, yaw, pitch, row;

变换矩阵

Eigen::Isometry3d T = Eigen::Isometry3d::Identity();

T.rotate(rotation_vector);

T.pretranslate(Eigen::Vector3d(1, 3, 4));

cout <<"Transform matrix is \n" << T.matrix() << endl;

cout <<"Rotation vector is \n" << rotation_vector.axis() << endl;

四元数

Eigen::Quaterniond q = Eigen::quaterniond (rotation _vector);

cout << " quaterniond = \n" << q.coeffs() << endl;

v_rotated = q *  v;

参考书目《视觉SLAM十四讲:从理论到实践》

相关文章

  • 2021-01-09利用eigen矩阵基本操作

    头文件 #include #include

  • 强大的C++矩阵处理库-Eigen

    Eigen介绍 Eigen是可以用来进行线性代数、矩阵、向量操作等运算的C++库,它里面包含了很多算法。它的Lic...

  • 2019-02-26 Eigen库使用

    项目里用了很多Eigen做矩阵运算,决定好好整理一下。 1.矩阵定义 2.矩阵初始化和基本计算 3.矩阵的分块 4...

  • 视觉SLAM常用的第三方库

    eigen eigen是一个线性代数运算库文件,用于矩阵和向量运算 sophus sophus是基于eigen写的...

  • eigen Dense矩阵拼接

    矩阵拼接报错: /usr/include/eigen3/Eigen/src/Core/Block.h:141: E...

  • NumPy学习

    矩阵操作 基本操作 向量 类型 取值 判断 矩阵 维度 求值 比较 特定赋值 类型转换 求最值 矩阵操作 生成序列...

  • 基本矩阵操作

    2.2.1、矩阵和数组的概述 矩阵是matlab中重要的内建数据结构,对于矩阵的操作主要包括:矩阵的构建,维度和大...

  • Eigen矩阵库使用总结

    背景 最近接触到了矩阵库Eigen,在此记录一下使用中遇到的一些问题。 1. 块操作 M.block(a, b, ...

  • Eigen介绍及简单使用2020-05-07

    Eigen是可以用来进行线性代数、矩阵、向量操作等运算的C++库,它里面包含了很多算法。它的License是MPL...

  • Numpy

    操作数组和矩阵 基本操作 二维操作 特殊操作 属于np的函数 平均值 索引切片 打印行列 行矩阵 多个矩阵合并 ...

网友评论

      本文标题:2021-01-09利用eigen矩阵基本操作

      本文链接:https://www.haomeiwen.com/subject/hdwcaktx.html