Eigen(3)矩阵Matrix及其简单操作

您所在的位置:网站首页 matrixt Eigen(3)矩阵Matrix及其简单操作

Eigen(3)矩阵Matrix及其简单操作

2024-07-11 11:47| 来源: 网络整理| 查看: 265

1. Matrix类

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

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

Matrix

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

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

typedef Matrix Matrix4f; 2. Vectors向量

列向量

typedef Matrix Vector3f;

行向量

typedef Matrix RowVector2i; 3. Dynamic

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

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

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

Matrix3f a; MatrixXf b;

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

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

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); 5. 获取元素

    通过中括号获取元素,对于矩阵是:(行,列);对于向量,只是传递它的索引,以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


【本文地址】


今日新闻


推荐新闻


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