Eigen库中的变量类型及函数
变量 |
功能 |
Eigen::Matrix3d |
旋转矩阵3X3,元素为double类型(此处也可以为:f,i,c)(可以直接输出) |
Eigen::Matrix<float,2,3> |
定义2X3矩阵,元素为float类型(Eigen中所有的向量和矩阵的底层都是如此定义) |
Eigen::Vector3d |
定义三维列向量,等价于Eigen::Matrix<double,3,1> |
Eigen::SelfAdjointEigenSolver< Eigen::Matrix3d > A(B) |
矩阵B的相似对角化 |
Eigen::Matrix<float,Eigen::Dynamic,Eigen::Dynamic> |
定义动态矩阵,运行时确定矩阵大小,相对耗时 |
Eigen::MatrixXd |
定义动态矩阵 |
Eigen::Isometry3d |
欧式变换矩阵4X4 |
Eigen::AngleAxisd rotation_vector(M_PI/4,Eigen::Vector3d(0,0,1)) |
旋转向量3X1,沿Z轴旋转课45° |
Eigen::Quaterniond |
四元数(4X1) |
Eigen::Quaterniond(rotation_vector/rotation_matrix) |
四元数的初始化 |
q*v |
利用四元数法旋转一个向量v,实际上数学为qvq^(-1) |
Eigen::Affine3d |
仿射变换4X4 |
Eigen::Projective3d |
射影变化4X4 |
函数 |
功能 |
Eigen::Matrix3d::Identity() |
单位矩阵,其他矩阵类中亦有此操作 |
Eigen::Matrix3d::Zero() |
零矩阵,其他矩阵类中亦有此操作 |
Eigen::Matrix3d::Random() |
随机矩阵,其他矩阵类中亦有此操作 |
Eigen::MatrixXd::Random(matrix_sizea,matrix_sizeb) |
随机矩阵 |
transpose() |
转置 |
sum() |
各元素和 |
trace() |
迹 |
inverse() |
逆 |
determinant() |
行列式 |
A.eigenvalues() |
特征值(SelfAdjointEigenSolver类中成员函数) |
A.eigenvectors() |
特征向量(SelfAdjointEigenSolver类中成员函数) |
eulerAngles(2,1,0) |
转换为ZYX欧拉角,0–X,1–Y,2–Z |
rotate(rotation_vector) |
按照rotation_vector进行旋转 |
pretranslate(translate_vector) |
按照translate_vector进行平移 |
colPivHouseholderQr() |
QR分解 |
solve(右侧向量) |
解非齐次方程组 |
matrix()或者toRotationMatrix() |
AngleAxisd类中成员函数,将选择向量转换为旋转矩阵 |
coeffs() |
其顺序为(x,y,z,w),w为实部,前3个为虚部 |
注意:
(1)在Eigen里不能够混合两种不同类型的矩阵进行运算,如float和double类型,需要强制类型转换,eg:.cast(),不可以直接前缀强制转换
(2)Matrix3d、vector3d之类的变量都是类,默认double数据类型,内嵌许多成员
(3)Matrix3d、vector3d之类的大写字母开头的均是类,Matrix、SelfAdjointEigenSolver是模板类
vscode基本配置:https://blog.csdn.net/weixin_43374723/article/details/84064644
Eigen库使用方法:https://www.jianshu.com/p/931dff3b1b21