块操作

点击查看代码
#include<iostream>
#include<eigen3/Eigen/Dense>
using  namespace std;
using namespace Eigen;
int main(int argc,char * argv[]){

    ArrayXd vec(9);
    vec << 1,2,3,4,5,6,7,8,9;
    cout << vec << endl;
    cout << "head" <<endl;
    cout << vec.head(3)<<endl;
    cout << "tail" <<endl;
    cout << vec.tail(3)<<endl;

    cout << "segment" << endl;
    cout << vec.segment(3,3)<<endl;

    MatrixXd mat(4,4);
    mat << 1,2,3,4,
                    5,6,7,8,
                    9,10,11,12,
                    13,14,15,16;
    cout << mat.col(3)<<endl;
    cout << mat.row(3)<<endl;
    cout << mat.block(1,1,2,2)<<endl;
    cout << mat.block <2,2>(1,1)<<endl;
    return 0;
}

注意最后两个: mat.block(1,1,2,2)表示的是从矩阵(1,1)开始取两行和两列的元素 mat.block<2,2>(1,1)表示的是去2*2的子矩阵,起点从(1,1)开始
posted on 2022-08-09 17:25  hold涛  阅读(68)  评论(0)    收藏  举报