视觉slam14讲 ch3 课后习题5

假设有一个大的Eigen矩阵,想把它的左上角3×3的块取出来,然后赋值为I3\times 3,请编程实现。

#include <iostream>
#include <vector>
#include <algorithm>
#include <Eigen/Core>
#include <Eigen/Dense>
#include <Eigen/Geometry>

using namespace std;

#define MATRIX_SIZE 50; //定义矩阵最大尺寸

int main(int agrc,char** agrv ){
    cout.precision(3);//精确到小数点后三位
    Eigen::Matrix <double, MATRIX_SIZE , MATRIX_SIZE > M =MatrixXd::Random(MATRIX_SIZE ,MATRIX_SIZE ); //声明 M 矩阵为随机矩阵
    Eigen::Matrix3d m=Matrix3d::Random(); 声明m矩阵为3*3随机矩阵
    cout<<" 取出后:"<<endl;
    //遍历M的前3*3块赋值给m
    for (int i=0;i<3;i++){
        for(int j=0;j<3;j++){
             m(i,j)=M(i,j);
             cout<<m(i,j)<<" ";
        }
        cout<<endl;
    }
    m=Matrix3d::Identity();//赋值为I3*3
    cout<<"赋值后:"<<endl<<m<<endl;

    return 0;
}

输出结果 :

 

猜你喜欢

转载自blog.csdn.net/weixin_62952541/article/details/131573715
今日推荐