Eigen使用方法

看了这边博客之后总结一下https://blog.csdn.net/augusdi/article/details/12907341#,感谢原作!看了之后学到了好多!

1、矩阵定义

  • 不管是向量还是矩阵,都具有默认构造函数,所以定义一个变量时可以不指定任何参数,等到用的时候具体分配。

模板参数共六个,前三个用的比较多,是类型,行和列。

typedef Matrix MatrixXd;
typedef Matrix Vector3d;
  • 矩阵的构造函数只提供类型、行数、列数的构造函数,不提供元素值的初始化。对于比较小的、固定长度的向量提供初始化元素的定义:如
Vector2d a(5.0, 6.0);
Vector3d b(5.0, 6.0, 7.0);
Vector4d c(5.0, 6.0, 7.0, 8.0);

2、静态矩阵和动态矩阵

3、矩阵元素的访问:

下标从0开始,访问可以使用( )对向量还可以使用[ ]。对矩阵不能使用[],因为c++中,逗号表达式m[i,j]中的“i,j”始终为j的值,所以m[i,j]在c++中就是m[j]。切记!!!

4、设置矩阵的元素

一个一个 或者 一块一块

<< //个操作

VectorXt A;

A.middleRows(3, 3)<< 1,2,3; //块操作

两个动态矩阵可以直接赋值,静态矩阵也可以赋值给动态矩阵

5、重置矩阵大小

当前矩阵的行数、列数、大小可以通过rows(),cols()和size()来获取,对于动态矩阵可以通过resize()函数来动态修改矩阵的大小.

需注意:

(1) 固定大小的矩阵是不能使用resize()来修改矩阵的大小;

(2) resize()函数会析构掉原来的数据,因此调用resize()函数之后将不能保证元素的值不改变。
(3) 使用“=”操作符操作动态矩阵时,如果左右边的矩阵大小不等,则左边的动态矩阵的大小会被修改为右边的大小。例如下面的代码段:

MatrixXf a(2,2);
MatrixXf b(3,3);
a = b;
//则此时a为3X3

 

你可能感兴趣的:(Eigen使用方法)