Eigen的常用矩陣型別和行列操作

2021-09-25 12:59:31 字數 4018 閱讀 4973

eigen矩陣可以使用成員函式col(int i);row(i);對矩陣的行列進行賦值,要注意的是左值和右值為同乙個矩陣中的塊時容易出現bug,盡量使用中間變數去避免這種情況,乙個示例如下

#include#includeusing 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"t.col(0)=r.col(0);

t.col(1)=r.col(1);

t.col(2)=r.col(2);

t.col(3)=v;

cout<<"t = \n"cmake_minimum_required(version 2.8)

project(usegeometry)

include_directories(

"/usr/include/eigen3"

)add_executable(eigen_geometry eigen_geometry.cpp)

這個標頭檔案中包含了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::matrixmatxx;

typedef eigen::matrixmat1010;

typedef eigen::matrixmat1313;

typedef eigen::matrixmat810;

typedef eigen::matrixmat83;

typedef eigen::matrixmat66;

typedef eigen::matrixmat53;

typedef eigen::matrixmat43;

typedef eigen::matrixmat42;

typedef eigen::matrixmat33;

typedef eigen::matrixmat22;

typedef eigen::matrixmat23;

typedef eigen::matrixmat88;

typedef eigen::matrixmat77;

typedef eigen::matrixmat49;

typedef eigen::matrixmat89;

typedef eigen::matrixmat94;

typedef eigen::matrixmat98;

typedef eigen::matrixmat99;

typedef eigen::matrixmat66;

typedef eigen::matrixmat96;

typedef eigen::matrixmat81;

typedef eigen::matrixmat18;

typedef eigen::matrixmat91;

typedef eigen::matrixmat19;

typedef eigen::matrixmat84;

typedef eigen::matrixmat48;

typedef eigen::matrixmat44;

typedef eigen::matrixmat1414;

typedef eigen::matrixmat1515;

// float matricies

typedef eigen::matrixmat33f;

typedef eigen::matrixmat103f;

typedef eigen::matrixmat22f;

typedef eigen::matrixvec3f;

typedef eigen::matrixvec2f;

typedef eigen::matrixvec6f;

typedef eigen::matrixmat18f;

typedef eigen::matrixmat66f;

typedef eigen::matrixmat88f;

typedef eigen::matrixmat84f;

typedef eigen::matrixmat66f;

typedef eigen::matrixmat44f;

typedef eigen::matrixmat1212f;

typedef eigen::matrixmat1313f;

typedef eigen::matrixmat1010f;

typedef eigen::matrixmat99f;

typedef eigen::matrixmat42f;

typedef eigen::matrixmat62f;

typedef eigen::matrixmat12f;

typedef eigen::matrixmatxxf;

typedef eigen::matrixmat1414f;

// double vectors

typedef eigen::matrixvec15;

typedef eigen::matrixvec14;

typedef eigen::matrixvec13;

typedef eigen::matrixvec10;

typedef eigen::matrixvec9;

typedef eigen::matrixvec8;

typedef eigen::matrixvec7;

typedef eigen::matrixvec6;

typedef eigen::matrixvec5;

typedef eigen::matrixvec4;

typedef eigen::matrixvec3;

typedef eigen::matrixvec2;

typedef eigen::matrixvec1;

typedef eigen::matrixvecx;

// float vectors

typedef eigen::matrixvec12f;

typedef eigen::matrixvec8f;

typedef eigen::matrixvec10f;

typedef eigen::matrixvec4f;

typedef eigen::matrixvec12f;

typedef eigen::matrixvec13f;

typedef eigen::matrixvec9f;

typedef eigen::matrixvecxf;

typedef eigen::matrixvec14f;

// 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

矩陣入門(Eigen和Opencv類似)

1 eigen矩陣定義 eigen定義 型別 行 列 matrix eg.matrix型別為浮點型3行4列的矩陣 1 2 3 4 2 2 3 4 3 2 3 4 2 預定義的特殊矩陣vector列矩陣 rowvector行矩陣 eg.vector3d matrix 為3行1列的矩陣 eg.rowve...

Eigen學習筆記 3 矩陣和向量的運算

原文 eigen官網 matrix and vector arithmetic 本節內容主要介紹eigen中關於矩陣 向量 標量之間的數 算。eigen提供了matrix vector的運算操作,既包括過載了c 的算術運算子 也引入了一些特殊的運算比如點乘dot 叉乘cross 等。左右兩側的變數都...

矩陣行列序的問題

include stdio.h define m 2 define n 5 void main int iscore m n int i,j system graftabl 936 呼叫ms dos中文支援 clrscr 清屏 printf d x d 矩陣 n m,n for i 0 ifor j...