1.首先是矩阵的定义和初始化
//定义 test1、test2都会动态矩阵
Matrix<qint16, Dynamic, Dynamic> test1,test2;
//设定矩阵 test1、test2的行列数
test1.resize(4,6);
test2.resize(4,3);
//矩阵初始化
int i,j;
for ( i=0 ; i<test1.rows(); i++ ) {
for ( j=0 ; j<test1.cols() ; j++) {
test1(i,j)=i*1+j;
}
}
for ( i=0 ; i<test2.rows(); i++ ) {
for ( j=0 ; j<test2.cols() ; j++) {
test2(i,j)=i*4+j;
}
}
//输出初始化后矩阵中的数据
std::cout << "Here is the MatrixXd test1:\n" << test1 << std::endl;
std::cout << "Here is the MatrixXd test2:\n" << test2 << std::endl;
输出结果:
2.在矩阵后面添加矩阵(不使用中间矩阵)
//矩阵temp,将它的行数设置为test1的行数,列数设置为test1的列数和tset2的列数之和
//test1为4x6的矩阵,test2为4x3的矩阵
//conservativeResize()在改变矩阵的同时会保留矩阵的数据
test1.conservativeResize( test1.rows(), test1.cols()+test2.cols() );
test1.col( test1.cols()-test2.cols() ) << test2; //col()是对矩阵的某一列进行操作
//输出结果
std::cout << "在后面添加矩阵test2后矩阵test1的值为:\n"<< test1 << std::endl;
输出结果:
3.删除矩阵前面几列
int deletecol = 3; //deletecol为删除矩阵的列数
//block是Eigen矩阵中的块操作,即对矩阵中某一块数据进行操作
//block的第一个参数为块的起始行数,从0开始;第二个参数为块的起始行数,从0开始;
//block的第三个参数为块的行数;第四个参数为块的列数;
test1.block(0, 0, test1.rows(), test1.cols()-deletecol) << test1.block(0, deletecol, test1.rows(), test1.cols()-deletecol);
test1.conservativeResize( test1.rows(), test1.cols()-deletecol );
//输出结果
std::cout << "删除前面矩阵后矩阵test1的值为:\n"<< test1 << std::endl;
输出结果: