1. 头文件声明
#include<eigen3/Eigen/Core>
#include<eigen3/Eigen/Dense>
#include<iostream>using Eigen::MatrxXd;
using Eigen::VectorXd;
2. 向量
2.1 列向量定义
Eigen::Vector2d c1;//2*1列向量, 数据类型d是double
Eigen::Vector3d c2;//3*1列向量, 数据类型d是double
Eigen::Vector4d c3;//4*1列向量, 数据类型d是double
Eigen::VectorXd c4(30);//X*1动态列向量, 括号内数值可以自己定义,这里是30,表示30*1列向量, 数据类型d是doubleEigen::Vector2f c5;//2*1列向量, 数据类型f是float
Eigen::Vector3f c6;//3*1列向量, 数据类型f是float
Eigen::Vector4f c7;//4*1列向量, 数据类型f是float
Eigen::VectorXf c8(20);//X*1动态列向量, 括号内数值可以自己定义,这里是20,表示20*1列向量, 数据类型f是floatEigen::Vector2i c9;//2*1列向量, 数据类型i是int
Eigen::Vector3i c10;//3*1列向量, 数据类型i是int
Eigen::Vector4i c11;//4*1列向量, 数据类型i是int
Eigen::VectorXi c12(20);//X*1动态列向量, 括号内数值可以自己定义,这里是20,表示20*1列向量, 数据类型i是int
列向量也可以用矩阵来表示
Eigen::Matrix<int,5,1> c13;//5*1列向量,第一个参数是数据类型int,第二个参数是行数,第三个参数是列数
2.2 行向量定义
Eigen::RowVector2d r1;//1*2行向量, 数据类型d是double
Eigen::RowVector3d r2;//1*3行向量, 数据类型d是double
Eigen::RowVector4d r3;//1*4行向量, 数据类型d是double
Eigen::RowVectorXd r4(30);//1*X动态行向量, 括号内数值可以自己定义,这里是30,表示30*1行向量, 数据类型d是doubleEigen::RowVector2f r5;//1*2行向量, 数据类型f是float
Eigen::RowVector3f r6;//1*3行向量, 数据类型f是float
Eigen::RowVector4f r7;//1*4行向量, 数据类型f是float
Eigen::RowVectorXf r8(20);//1*X动态行向量, 括号内数值可以自己定义,这里是20,表示20*1行向量, 数据类型f是floatEigen::RowVector2i r9;//1*2行向量, 数据类型i是int
Eigen::RowVector3i r10;//1*3行向量, 数据类型i是int
Eigen::RowVector4i r11;//1*4行向量, 数据类型i是int
Eigen::RowVectorXi r12(20);//1*X动态行向量, 括号内数值可以自己定义,这里是20,表示20*1行向量, 数据类型i是int
行向量也可以用矩阵来表示
Eigen::Matrix<int,1,5> r13;//1*5行向量,第一个参数是数据类型int,第二个参数是行数,第三个参数是列数
2.3 向量赋值方法
2.3.1 列向量赋值方法
Eigen::Vector2f c14(5.0,2.0);//2*1列向量
2.3.2 行向量举例
Eigen::RowVector2f r14(5.0,2.0);//1*2行向量
2.3.3 其他赋值方法
- 逐个元素赋值
注意索引是从0开始,和数组是一样的!
Eigen::VectorXd c(2);c(0) = 4;c(1) = c(0) - 1;
- 用矩阵赋值
Eigen::Matrix<int,1,5> r15;
v13 << 1, 2, 3, 4, 5;
3. 矩阵
3.1 矩阵定义
Eigen::Matrix2d m1;//2*2矩阵, 数据类型d是double
Eigen::Matrix3d m2;//3*3矩阵, 数据类型d是double
Eigen::Matrix4d m3;//4*4矩阵, 数据类型d是double
Eigen::MatrixXd m4(15,10);//动态矩阵, 括号内第一个参数是行,第二个参数是列,这里是15和10,表示15*10矩阵, 数据类型d是doubleEigen::Matrix2f m5;//2*2列向量, 数据类型f是float
Eigen::Matrix3f m6;//3*3列向量, 数据类型f是float
Eigen::Matrix4f m7;//4*4列向量, 数据类型f是float
Eigen::MatrixXf m8(10,15);//动态矩阵, 括号内第一个参数是行,第二个参数是列,这里是10和15,表示10*15矩阵, 数据类型f是floatEigen::Matrix2i m9;//2*2列向量, 数据类型i是int
Eigen::Matrix3i m10;//3*3列向量, 数据类型i是int
Eigen::Matrix4i m11;//4*4列向量, 数据类型i是int
Eigen::MatrixXi m12(10,15);//动态矩阵, 括号内第一个参数是行,第二个参数是列,这里是10和15,表示10*15矩阵, 数据类型i是int
3.2 矩阵赋值方法
3.2.1 每个矩阵元素单独赋值
注意索引是从0开始,和数组是一样的!
Eigen::MatrixXd m(2,2);
m(0,0) = 3;
m(1,0) = 2.5;
m(0,1) = -1;
m(1,1) = m(1,0) + m(0,1);
3.2.3 逗号赋值
Eigen::Matrix3f m;
m << 1, 2, 3,4, 5, 6,7, 8, 9;