[C++]Eigen库常用函数

引言

Eigen是一个基于c++模板的线性代数库,以支持在C++中进行矩阵运算。要在C++中使用Eigen,需要在项目路径中包含文件目录,同时在程序开始前要包含所需头文件路径:

#include <Eigen>

1.矩阵定义

基本矩阵

向量定义(以double类型为例)
Eigen::Vector2d x(1,2)     // 2维向量
Eigen::Vector3d x(1,2,3)  // 3维向量
Eigen::VectorXd x(n)       // 自定义n维向量

矩阵定义(以double类型为例)
Eigen::Matrix2d mat                  // 2维矩阵
Eigen::Matrix3d mat                  // 3维矩阵
Eigen::Matrix4d mat                  // 4维矩阵
Eigen::MatrixXd mat(m,n)         // 自定义m行,n列矩阵
Eigen::Matrix <double, m, n> mat;   // 自定义m行,n列矩阵

特殊矩阵

单位矩阵:Eigen::MatrixXd::Identity(m, n);
全零矩阵:Eigen::MatrixXd::Zero(m, n); 
全一矩阵:Eigen::MatrixXd::Ones(m, n);   
随机矩阵:Eigen::MatrixXd::Random(m, n);
**使用:**
先定义:Eigen::Matrix3d mat;
再赋值:mat =  Eigen::MatrixXd::Identity(m, n);
三维矩阵(定长):Eigen::Matrix4d mat[10];
索引 mat[2](m,n)

2.矩阵赋值

**向量赋值**
定义:Eigen::VectorXd x(n)       // 自定义n维向量
赋值:x(1) = 2;
**矩阵赋值**
定义:Eigen::MatrixXd mat(2,2)
赋值1: mat << 1,2,
              3,4;
赋值2: mat(0,1) = 2       

3.矩阵运算

+-*/                     // 加减乘除
mat.inverse();           // 逆矩阵
mat.dot(w);              // 向量mat点积向量w,
mat.cross(w);            // 向量mat叉乘向量w
mat.transpose()          // 转置
mat.norm()               //向量求模,矩阵范数

4.访问矩阵

vec.size();            // 访问向量长度
mat.rows();            // 访问矩阵行数
mat.cols();            // 访问矩阵列数
mat.block<m,n>(i,j)    //矩阵块操作,从i,j开始,取m×n大小的矩阵

5.机器人学常用

仿射变换矩阵:Eigen::Affine3d mat;

  • 转换4*4矩阵为仿射矩阵:Eigen::Affine3d mat(T);
  • 得到旋转矩阵:mat.linear();
  • 得到平移矩阵:mat.translation();

创建四元数:Eigen::Quaterniond q(w, x, y, z);

  • 访问四元数:q.x() q.y() q.z() q.w();
  • 四元数转向量:q.coeffs();
  • 四元数转旋转矩阵:q.toRotationMatrix();
  • 四元数插值:q_ini.slerp(s,q_fin);
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值