Eigen 学习之块操作

Eigen 为 Matrix 、Array 和 Vector提供了块操作方法。块区域可以被用作 左值 和 右值。在Eigen中最常用的块操作函数是 .block() 。

block() 方法的定义如下:

block of size (p,q) ,starting at (i,j)。matrix.block(i,j,p,q); matrix.block(i,j);

上述两种形式都可以被用在固定大小和动态大小的矩阵中。

举例如下:

#include 
#include 

using namespace Eigen;
using namespace std;

int main(int argc ,char** argv)
{
    MatrixXf m(4,4);
    m << 1,2,3,4,
         5,6,7,8,
         9,10,11,12,
         13,14,15,16;
    cout<<"Block in the middle"<(1,1)<

block也可以被用作左值,即block可以进行赋值操作。


#include 
#include 

using namespace Eigen;
using namespace std;

int main(int argc ,char** argv)
{
    Array22f m;
    m << 1,2,
         3,4;

    Array44f a = Array44f::Constant(0.6);
    cout<<"Here is the array a"<(1,1) = m;
    cout<<"Here is now a with m copoed into its central 2x2 block"<

特殊情况下的块操作,比如取整行或者整列,取上面的若干行或者底部的若干行。

取 整行和整列的操作如下:

matrix.row(i);

  matrix.col(j);

访问矩阵的行和列的操作如下:

#include 
#include 

using namespace Eigen;
using namespace std;

int main(int argc ,char** argv)
{
    MatrixXf m(3,3);
    m << 1,2,3,
         4,5,6,
         7,8,9;
    cout<<"Here is the matrix m:"<

你可能感兴趣的:(slam学习,ROS学习)