Eigen教程2

您所在的位置:网站首页 xd有什么意思 Eigen教程2

Eigen教程2

2023-11-27 03:50| 来源: 网络整理| 查看: 265

本文为作者原创,转载请注明出处:https://www.cnblogs.com/houkai/p/6347648.html

整理下Eigen库的教程,参考:http://eigen.tuxfamily.org/dox/index.html

Matrix类

在Eigen,所有的矩阵和向量都是Matrix模板类的对象,Vector只是一种特殊的矩阵(一行或者一列)。

Matrix有6个模板参数,主要使用前三个参数,剩下的有默认值。

Matrix

Scalar是表示元素的类型,RowsAtCompileTime为矩阵的行,ColsAtCompileTime为矩阵的列。

库中提供了一些类型便于使用,比如:

typedef Matrix Matrix4f; Vectors向量

列向量

typedef Matrix Vector3f;

行向量

typedef Matrix RowVector2i; Dynamic

Eigen不只限于已知大小(编译阶段)的矩阵,有些矩阵的尺寸是运行时确定的,于是引入了一个特殊的标识符:Dynamic

typedef Matrix MatrixXd; typedef Matrix VectorXi; Matrix 构造函数

默认的构造函数不执行任何空间分配,也不初始化矩阵的元素。

Matrix3f a; MatrixXf b;

这里,a是一个33的矩阵,分配了float[9]的空间,但未初始化内部元素;b是一个动态大小的矩阵,定义是未分配空间(00)。

指定大小的矩阵,只是分配相应大小的空间,未初始化元素。

MatrixXf a(10,15); VectorXf b(30);

这里,a是一个10*15的动态大小的矩阵,分配了空间但未初始化元素;b是一个30大小的向量,同样分配空间未初始化元素。

为了对固定大小和动态大小的矩阵提供统一的API,对指定大小的Matrix传递sizes也是合法的(传递也被忽略)。

Matrix3f a(3,3);

可以用构造函数提供4以内尺寸的vector的初始化。

Vector2d a(5.0, 6.0); Vector3d b(5.0, 6.0, 7.0); Vector4d c(5.0, 6.0, 7.0, 8.0); 获取元素

通过中括号获取元素,对于矩阵是:(行,列);对于向量,只是传递它的索引,以0为起始。

#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 Matrix4d m; m.resize(4,4); // no operation std::cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3