Eigen::MatrixXd 和 Eigen::VectorXd 快速入门 -- 元素获取

  • 先说明下 Eigen 中的 Matrix 和 Vector:
    • 所有的矩阵和向量都是 Matrix模板类 (👉 官方指路) 的对象,向量 Vector 只是一种特殊的矩阵 Matrix (一行或者一列)

      // Matrix 模板类如下
      template<typename Scalar_, int Rows_, int Cols_, int Options_, int MaxRows_, int MaxCols_>
      class Eigen::Matrix< Scalar_, Rows_, Cols_, Options_, MaxRows_, MaxCols_ >
      
      模板参数作用
      Scalar_数据类型如 float, double, int …
      Rows_行数给定数值 or 动态 Dynamic,运行时确定
      Cols_列数给定数值 or 动态 Dynamic,运行时确定

⭐ 官方对于 Eigen::MatrixXd 和 Eigen::VectorXd 的说明: X 代表非固定,是动态的💜 Dynamic

  • 本质上是两种官方提供了的便于使用的类型 (类似 Eigen::Matrix3d 和 Eigen::Vector3d),具体设定如下

typedef Matrix< double, Dynamic, Dynamic > Eigen::MatrixXd 👉 Eigen::MatrixXd 官方文档指路

  • Dynamic×Dynamic matrix of type double.

typedef Matrix< double, Dynamic, 1 > Eigen::VectorXd 👉 Eigen::VectorXd 官方文档指路

  • Dynamic×1 vector of type double.

  • 构造函数 💜 不指定大小则不执行空间分配
    // 默认构造:
    // 不执行任何空间分配,也不初始化元素
    MatrixXd m;
    VectorXd v;
    
    // 指定大小:
    // 分配相应大小的空间,不初始化元素
    MatrixXd m(2,2);
    VectorXd v(2);
    
  • 获取元素 💜 通过括号获取 (i, j, ...) or (i)
    // MatrixXd: (i, j, ...)
    //
    MatrixXd m(2,2);
    m(0,0) = 1;
    m(1,0) = 2;
    m(0,1) = 3;
    m(1,1) = m(0,0) + m(1,0) + m(0,1);
    std::cout << "Matrix m:\n" << m << std::endl;
    
    // VectorXd (i)
    //
    VectorXd v(2);
    v(0) = 1;
    v(1) = v(0) + 1;
    std::cout << "Vector v:\n" << v << std::endl;
    
  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值