Eigen矩阵在矩阵后添加矩阵(不使用中间矩阵)和删除矩阵前部分矩阵(删除矩阵前面几列)操作,

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;

输出结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

以自由之名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值