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

2021-01-09利用eigen矩阵基本 *** 作,第1张

头文件

#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十四讲:从理论到实践》

您好,添加源文件的下拉菜单没有个并列的添加include的选项?sdk源码里有没有目录Eigen/Dense?

如果运行的 是通过“打开工程或文件”的原程序,运行就有错。如果运行的是通过“新建”的程序,就没有错。

http://blog.csdn.net/abcjennifer/article/details/7781936

正好刚在研究这个

多看看博客,仔细研究下。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7875936.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存