SLAM——Eigen函数库之矩阵块运算,高阶操作middleCols与segment用法

Eigen/四元数/欧拉角/旋转矩阵 相关系列文章

  1. Eigen/Matlab 使用小结
  2. SLAM——之Eigen入门(矩阵运算及几何模块)
  3. SLAM——之Eigen函数库,一个相对复杂的EIgen使用实例
  4. SLAM——Eigen函数库:矩阵块运算,block操作
  5. SLAM——Eigen函数库之 Eigen::Ref 使用实例
  6. 欧拉角和旋转矩阵相互转换
  7. 四元数与三维向量相乘运算
  8. 四元数求导
  9. SLAM——Eigen函数库之矩阵块运算,高阶操作middleCols与segment用法
 frame->grad_vec_.middleCols(n_old, n_new) = new_grads;
 frame->score_vec_.segment(n_old, n_new) = new_scores;

middleCols()segment() 是 Eigen 库中的两个不同的函数,用于操作矩阵的列或向量的连续部分。

  1. middleCols():这是一个矩阵的成员函数,用于选择矩阵的连续列并进行赋值。它的语法如下:

    MatrixType.middleCols(startCol, numCols);
    

    其中,MatrixType 是要操作的矩阵类型,startCol 是起始列的索引,numCols 是要选择的连续列的数量。这个函数返回一个对选定列的引用,所以你可以使用赋值运算符来进行赋值操作。

    在你提供的代码中,frame0->grad_vec_.middleCols(n_old, n_new) = new_grads; 表示从矩阵 frame0->grad_vec_ 的第 n_old 列开始,选择连续的 n_new 列,并将其赋值为 new_grads

  2. segment():这是一个向量的成员函数,用于选择向量的连续部分并进行赋值。它的语法如下:

    VectorType.segment(startIndex, numElements);
    

    其中,VectorType 是要操作的向量类型,startIndex 是起始索引,numElements 是要选择的连续元素的数量。这个函数返回一个对选定部分的引用,所以你可以使用赋值运算符来进行赋值操作。

    在你提供的代码中,frame0->score_vec_.segment(n_old, n_new) = new_scores; 表示从向量 frame0->score_vec_ 的第 n_old 个元素开始,选择连续的 n_new 个元素,并将其赋值为 new_scores

因此,middleCols() 用于操作矩阵的列,而 segment() 用于操作向量的连续部分。它们在语法和使用方面有所不同,但都允许选择连续的部分并进行赋值操作。

猜你喜欢

转载自blog.csdn.net/Darlingqiang/article/details/132628403