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