Eigen的常用矩阵类型和行列操作

Eigen矩阵可以使用成员函数col(int i); row(i); 对矩阵的行列进行赋值,要注意的是左值和右值为同一个矩阵中的块时容易出现bug,尽量使用中间变量去避免这种情况,一个示例如下

#include #include using namespace std; int main() { Eigen::Matrix3d R; Eigen::Vector3d v(1,2,3); Eigen::AngleAxisd t_V(1, Eigen::Vector3d::UnitZ()); //UnitZ()返回一个z轴上的单位向量(0,0,1) R=t_V.matrix(); cout<<"R = \n"<

CMakeLists.txt的写法
CMAKE_MINIMUM_REQUIRED(VERSION 2.8) project(useGeometry) include_directories("/usr/include/eigen3") add_executable(eigen_geometry eigen_geometry.cpp)

【Eigen的常用矩阵类型和行列操作】这个头文件中包含了eigen常用到的矩阵类型的宏定义,存在这儿以备不时之需
// // eigen_types.h Created by gaoxiang19 on 11/3/18. //#ifndef MYSLAM_EIGEN_TYPES_H #define MYSLAM_EIGEN_TYPES_H#include #include #include #include // double matricies typedef Eigen::Matrix MatXX; typedef Eigen::Matrix Mat1010; typedef Eigen::Matrix Mat1313; typedef Eigen::Matrix Mat810; typedef Eigen::Matrix Mat83; typedef Eigen::Matrix Mat66; typedef Eigen::Matrix Mat53; typedef Eigen::Matrix Mat43; typedef Eigen::Matrix Mat42; typedef Eigen::Matrix Mat33; typedef Eigen::Matrix Mat22; typedef Eigen::Matrix Mat23; typedef Eigen::Matrix Mat88; typedef Eigen::Matrix Mat77; typedef Eigen::Matrix Mat49; typedef Eigen::Matrix Mat89; typedef Eigen::Matrix Mat94; typedef Eigen::Matrix Mat98; typedef Eigen::Matrix Mat99; typedef Eigen::Matrix Mat66; typedef Eigen::Matrix Mat96; typedef Eigen::Matrix Mat81; typedef Eigen::Matrix Mat18; typedef Eigen::Matrix Mat91; typedef Eigen::Matrix Mat19; typedef Eigen::Matrix Mat84; typedef Eigen::Matrix Mat48; typedef Eigen::Matrix Mat44; typedef Eigen::Matrix Mat1414; typedef Eigen::Matrix Mat1515; // float matricies typedef Eigen::Matrix Mat33f; typedef Eigen::Matrix Mat103f; typedef Eigen::Matrix Mat22f; typedef Eigen::Matrix Vec3f; typedef Eigen::Matrix Vec2f; typedef Eigen::Matrix Vec6f; typedef Eigen::Matrix Mat18f; typedef Eigen::Matrix Mat66f; typedef Eigen::Matrix Mat88f; typedef Eigen::Matrix Mat84f; typedef Eigen::Matrix Mat66f; typedef Eigen::Matrix Mat44f; typedef Eigen::Matrix Mat1212f; typedef Eigen::Matrix Mat1313f; typedef Eigen::Matrix Mat1010f; typedef Eigen::Matrix Mat99f; typedef Eigen::Matrix Mat42f; typedef Eigen::Matrix Mat62f; typedef Eigen::Matrix Mat12f; typedef Eigen::Matrix MatXXf; typedef Eigen::Matrix Mat1414f; // double vectors typedef Eigen::Matrix Vec15; typedef Eigen::Matrix Vec14; typedef Eigen::Matrix Vec13; typedef Eigen::Matrix Vec10; typedef Eigen::Matrix Vec9; typedef Eigen::Matrix Vec8; typedef Eigen::Matrix Vec7; typedef Eigen::Matrix Vec6; typedef Eigen::Matrix Vec5; typedef Eigen::Matrix Vec4; typedef Eigen::Matrix Vec3; typedef Eigen::Matrix Vec2; typedef Eigen::Matrix Vec1; typedef Eigen::Matrix VecX; // float vectors typedef Eigen::Matrix Vec12f; typedef Eigen::Matrix Vec8f; typedef Eigen::Matrix Vec10f; typedef Eigen::Matrix Vec4f; typedef Eigen::Matrix Vec12f; typedef Eigen::Matrix Vec13f; typedef Eigen::Matrix Vec9f; typedef Eigen::Matrix VecXf; typedef Eigen::Matrix Vec14f; // Quaternions typedef Eigen::Quaterniond Qd; typedef Eigen::Quaternionf Qf; // Vector of Eigen vectors typedef std::vector> VecVec2; typedef std::vector> VecVec3; typedef std::vector> VecVec2f; typedef std::vector> VecVec3f; // Map of Eigen matrix typedef std::map, Eigen::aligned_allocator> MapMatXX; #endif

    推荐阅读