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

2021-01-09  本文已影响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十四讲:从理论到实践》

上一篇 下一篇

猜你喜欢

热点阅读