矩阵(Eigen/C++)的扩展(自己因为任务要用到的)
//定义原始矩阵
int a_rows = 2;
int a_cols = 3;
Eigen::MatrixXd a(a_rows,a_cols);
a << 1,2,3,
4,5,6;
//cout << "a:" << endl << a << endl;
int L = 3;
int a_extend_rows = a_rows;
int a_extend_cols = a_cols;
Eigen::MatrixXd a_extend;
//一个拼接
if(L == 1)
{
a_extend = Eigen::Matrix<double,Dynamic,Dynamic>();//动态矩阵初始化
a_extend.resize(a_extend_rows,a_extend_cols);
a_extend = a;
cout << "a_extend(1):" << endl << a_extend << endl;
}
//两个及以上拼接
if(L > 1)
{
a_extend = Eigen::Matrix<double,Dynamic,Dynamic>();//动态矩阵初始化
a_extend.resize(a_extend_rows,a_extend_cols);
a_extend = a;
for (int numExtend = 2; numExtend <= L; numExtend++)
{
a_extend_cols = a_extend_cols + a.cols();
Eigen::MatrixXd a_extend_temp;
a_extend_temp = Eigen::Matrix<double,Dynamic,Dynamic>();
a_extend_temp.resize(a_extend.rows(),a_extend.cols());
a_extend_temp = a_extend;
a_extend.resize(a_extend_rows,a_extend_cols);//改变要扩展矩阵的维度
a_extend << a_extend_temp,a;
}
cout << "a_extend(" << L << "):" << endl << a_extend << endl;
}
这是打印的值
a_extend(3):
1 2 3 1 2 3 1 2 3
4 5 6 4 5 6 4 5 6