文章目录

  • eigen3lib的使用
  • 向量
    • 向量二元操作
    • 共轭
  • 矩阵
    • 矩阵赋值
    • 转置
    • 矩阵块操作
      • 取行
      • 取列
      • 取任意大小的块
    • 矩阵分解
      • Cholesky分解
  • 坐标变换
    • 坐标轴
    • 旋转
      • 旋转矩阵
      • 旋转四元数
      • 欧拉角
  • 数据类型转化
    • double数字转化为矩阵

eigen3lib的使用

向量

Eigen::Vector3f u;//3行*1列 列向量

向量二元操作

Eigen::Vector3f v;
u.dot(v);//向量内积 u·v
u.cross(v);//向量叉积 u×v

共轭

u.adjoint();//返回u的共轭向量,若u为实向量,则返回结果与u相同。

矩阵

Eigen::Matrix3d A;//3*3方阵
Eigen::Matrix<double, 3, 6> B;//3行*6列矩阵

矩阵赋值

A<<1,0,0,0,1,0,0,0,1;
A = Eigen::Matrix3d::Identity();//单位矩阵

转置

A.transpose();

矩阵块操作

取行

Eigen::Vector3d n0,n1,n2;
A12.row(0) = n0.transpose();//第0行
A12.row(1) = n1.transpose();//第1行
A12.row(2) = n2.transpose();//第2行

取列

Eigen::Vector3d n0,n1,n2;
A.col(0) = n0; //第0列
A.col(1) = n1; //第1列
A.col(2) = n2; //第2列

取任意大小的块

B.block<1, 3>(2, 0)=n1.transpose();//每块大小<1,3>1行*3列 位置(2,0)第2行,第0列的块
B.leftCols<3>() = Eigen::Matrix3d::Identity();//按照列从左边取<3>列
B.rightCols<3>() = Eigen::Matrix3d::Identity();//按照列右边取<3>列

矩阵分解

分解矩阵A

Cholesky分解

将A分解成 下三角矩阵L*L^T

Eigen::Matrix3d L,LT;
L = Eigen::LLT<Eigen::Matrix3d>(A).matrixL();
LT = Eigen::LLT<Eigen::Matrix3d>(A).matrixL().transpose();

原理介绍:https://blog.csdn.net/wfei101/article/details/81951888

坐标变换

坐标轴

Eigen::Vector3d::UnitX();  //x轴单位向量
Eigen::Vector3d::UnitY();  //x轴单位向量
Eigen::Vector3d::UnitZ();  //x轴单位向量

旋转

旋转矩阵

Eigen::Matrix3d R =Eigen::Matrix3d::Identity();
R =  Q.toRotationMatrix()

旋转四元数

double x,y,z,w;
Eigen::Quaterniond Q(w,x,y,z);
Eigen::Quaterniond Q(R);

欧拉角

数据类型转化

double数字转化为矩阵

double nums[1][9];
Eigen::Map<Eigen::Matrix<double, 3, 6, Eigen::RowMajor>> A(nums[0]);

Eigen3的库使用相关推荐

  1. 资源 | 做一款炫酷的机器人需要哪些学习资源(机器人资源Awesome系列)

    翻译 | AI科技大本营 参与 | 赵博 SuiSui 为什么要制作机器人呢?想参加各种机器人大赛?看起来很炫酷?不过从学习角度说,机器人综合了信息技术.电子工程.机械学.程序设计.控制系统以及认知等 ...

  2. UR驱动包安装过程及遇到问题的解决方案

    1. 去以下两个地址项目1和项目2下载项目   2. 新建一个文件夹如ur_ws,并且创建一个src子目录存放上面两个项目的解压文件,如下图所示. 3. 编译文件,执行catkin_make后报错Pr ...

  3. g2o图优化简介与基本使用方法

    一.g2o简介 g2o(General Graphic Optimization)是一个基于图优化的库,将非线性优化与图论结合起来的理论,我们可以利用g2o求解任何可以表示为图优化的最小二乘问题. 图 ...

  4. 【GNSS】PEA软件-GNSS 服务端整网数据处理的开源软件

    PEA软件-GNSS 服务端整网数据处理的开源软件 下载地址 Welcome to the PEA for GNSS processing. Welcome to the Parameter Esti ...

  5. Windows API参考大全

    第一章 Win32 API概论 1.1为什么使用 Wu32 API 在Windows程序设计领域处于发展初期时,Windows程序员可使用的编程工具唯有API 函数.这些函数在程序员手中犹如" ...

  6. matlab分离实部虚部,c – 如何在Eigen3库中有效地提取复杂矩阵的实部/虚部?

    我在Eigen3库中有一些复杂,密集的矢量/矩阵,我想将实部和虚部提取到单独的数组中.在Matlab中,我可以做类似的事情 cplxFoo = [1,1i; -1i -1] re = real(cpl ...

  7. Eigen:C++中Eigen库的安装与学习

    1.下载地址: http://eigen.tuxfamily.org/index.php?title=Main_Page 进入上边官方网站进行下载如下所示: 找到自己需要的版本下载即可,我下载的是3. ...

  8. 基于C++模板的线性代数库---Eigen

    Eigen 是一个基于C++模板的线性代数库,直接将库下载后放在项目目录下,然后包含头文件就能使用,非常方便.此外,Eigen的接口清晰,稳定高效. 在解决方案"属性"中的&quo ...

  9. 一个精简的开源点云库

    Cilantro是一个精简高效的点云数据处理库,编程是C++,依赖项较少,但是相比较于PCL来说,代码更有可读性,PCL中大量的使用C++高级特性,阅读起来比较难并且不易重构拆解代码,而cilantr ...

最新文章

  1. linux 搜索so文件,Linux下查找和安装依赖的.so文件
  2. 机器学习中的线性回归,你理解多少?
  3. R语言完美重现STAMP结果图
  4. 在Windows2003下搭建FTP服务器
  5. 用webstorm做一个跑马灯_用Workman做一个聊天室
  6. Java技巧-解决JAVA_HOME变量无效问题
  7. 找到下一个“元素节点”通用函数
  8. 考研规划计算机科学与技术,2021考研:计算机科学与技术研究方向及冲刺复习规划...
  9. java中import机制(指定import和import *的区别)
  10. 网络编程 - socket接收大数据
  11. 文本前后空格去除工具
  12. TCP流模式与UDP数据报模式
  13. 提示Algorithm negotiation failed 错误该如何解决
  14. 维度诅咒_维度的诅咒减去行话的诅咒
  15. 301代码php代码在哪里加,301转向设置及代码及方法详解
  16. 卡片式设计流行的秘密 — 看完这15个案例你就懂了!
  17. 几款强大的PPT制作辅助软件
  18. 基于高德地图实现可编辑的电子围栏功能【多边形围栏】
  19. 2019年18种最有效推广的方式
  20. 【秋招】计算机视觉面试题

热门文章

  1. 满屋花网页代码_成为更好的程序猿!2020年给网页开发人员的32条建议
  2. glibc版本查看_[译] 写一个简单的内存分配器(替换glibc中的malloc函数)
  3. 计算机驱动伺服的程序,伺服调试软件V-ASSISTANT始终找不到驱动-工业支持中心-西门子中国...
  4. java 快速从树节点找到数据_14期每日分享Java程序员分享超全哈希相关的知识
  5. I - Arbitrage(判断是否有无正环 II)
  6. MATLAB中如何生成指定范围的随机整数向量
  7. 手把手教程 Sublime Text 删除重复行
  8. 理解metrics.classification_report
  9. 【编程珠玑】第八章 算法设计技术
  10. 一本通1623Sherlock and His Girlfriend