Suppose there is a large Eigen matrix, and you want to take out the 3×3 block in its upper left corner, and then assign a value , please program it.
#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;
}
Output result: