在Eigen库中,所有的矩阵(matrices)和向量(Vector)都是Matrix模板的具体类。Vectors只是matrices的一种特殊情况,表示仅有一列的矩阵。
一、Matrix 矩阵Matrix模板有六个模板参数,一般我们只需要用到最前面的三个。这三个参数都有默认参数,现阶段暂时不必理会。这三个强制参数如下:
Matrix
- Scalar 是一个标量类型,换句话说就是系数类型。如果你想要操作的是浮点型,那就是float;如果操作的是整数,那就是int;
- RowsAtCompileTime和ColsAtCompileTime是编译阶段已经确定的行列大小;
对于一些常见的矩阵类型,我们还提供了便利的typedef。例如:Matrix4f是一个 4 × 4 4\times4 4×4的浮点型矩阵,其typedef如下:
typedef Matrix Matrix4f;
便捷类型举例MatrixNt for MatrixMatrixXi for Matrix.VectorNt for MatrixVector2f for Matrix.RowVectorNt for MatrixRowVector3d for Matrix.
二、Vector 向量
前面说道Vector是Matrix的一种特殊情况,所以Vector只是一些别名:
typedef Matrix Vector3f;
typedef Matrix RowVector2i;
三、其他的特殊别名
typedef Matrix MatrixXd;
typedef Matrix VectorXi;
四、构造函数
默认构造函数将执行默认初始化:
Matrix3f a;
MatrixXf b;
这种方式是分配在栈上的,下面这个例子则是分配在堆上的:
MatrixXf a(10,15);//10*15未初始化的动态可扩展矩阵
VectorXf b(30);//30*1未初始化动态可扩展矩阵
为了保持编程的一致性,对于方阵Matrix3f,我们仍然可以使用下面这个方法进行初始化:
Matrix3f a(3,3);//虽然说,大小已经固定,但是为了逻辑一致性还是允许这样初始化
最后,对于向量这种类型,我们提供了一些额外的初始化方法:
Vector2d a(5.0, 6.0);
Vector3d b(5.0, 6.0, 7.0);
Vector4d c(5.0, 6.0, 7.0, 8.0);
五、访问系数(元素,coefficient)
#include
#include
using namespace Eigen;
int main()
{
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);
std::cout
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?