Eigen 特征动态尺寸矩阵垂直/水平邻域?

Eigen 特征动态尺寸矩阵垂直/水平邻域?,eigen,linspace,Eigen,Linspace,我目前正在从事一个项目,需要能够创建矩阵,例如: MatrixXi lin_spaced_horizontaly = 0 1 2 3 4 ... ncols 0 1 2 3 4 ... ncols 0 1 2 3 4 ... ncols MatrixXi lin_spaced_verticaly = 0 0 0 1 1 1 2 2 2 3 3 3 4 4 4 . . . nrows nrows nrows 目前我正在尝试这样的事情: Eigen::VectorXi v_lin

我目前正在从事一个项目,需要能够创建矩阵,例如:

MatrixXi lin_spaced_horizontaly = 

0 1 2 3 4 ... ncols
0 1 2 3 4 ... ncols
0 1 2 3 4 ... ncols

MatrixXi lin_spaced_verticaly =
0 0 0 
1 1 1 
2 2 2 
3 3 3 
4 4 4
 . . . 
nrows nrows nrows
目前我正在尝试这样的事情:

Eigen::VectorXi v_lin_vec = Eigen::VectorXi::LinSpaced(nrows_, 0, nrows_).transpose
Eigen::MatrixXi v_lin_matrix (nrows_, ncols_);
for (auto i = 0; i<ncols_; i++)
        v_lin_matrix << v_lin_vec;

Eigen::VectorXi h_lin_vec = Eigen::VectorXi::LinSpaced(ncols_, 0, ncols_)
Eigen::MatrixXi h_lin_matrix (nrows_, ncols_);
for (auto i = 0; i<ncols_; i++)
        h_lin_matrix << h_lin_vec;

提前谢谢

您可以像这样使用
.rowwise().replicate(ncols)
.colwise().replicate(nrows)

Eigen::MatrixXi v_lin_matrix = Eigen::VectorXi::LinSpaced(nrows_, 0, nrows_)
                                     .rowwise().replicate(ncols_);
Eigen::MatrixXi h_lin_matrix = Eigen::RowVectorXi::LinSpaced(ncols_, 0, ncols_)
                                     .colwise().replicate(nrows_);
或者:

Eigen::MatrixXi v_lin_matrix = Eigen::VectorXi::LinSpaced(nrows_, 0, nrows_)
                                     .replicate(1,ncols_);
Eigen::MatrixXi h_lin_matrix = Eigen::RowVectorXi::LinSpaced(ncols_, 0, ncols_)
                                     .replicate(nrows_,1);

关于
的使用,您可以使用
.rowwise().replicate(ncols_41;
.colwise().replicate(nrows_41;
如下:

Eigen::MatrixXi v_lin_matrix = Eigen::VectorXi::LinSpaced(nrows_, 0, nrows_)
                                     .rowwise().replicate(ncols_);
Eigen::MatrixXi h_lin_matrix = Eigen::RowVectorXi::LinSpaced(ncols_, 0, ncols_)
                                     .colwise().replicate(nrows_);
或者:

Eigen::MatrixXi v_lin_matrix = Eigen::VectorXi::LinSpaced(nrows_, 0, nrows_)
                                     .replicate(1,ncols_);
Eigen::MatrixXi h_lin_matrix = Eigen::RowVectorXi::LinSpaced(ncols_, 0, ncols_)
                                     .replicate(nrows_,1);

关于您对
的使用,如果这解决了您的问题,您可以接受此答案(无需写“谢谢”评论)。如果这解决了您的问题,您可以接受此答案(无需写“谢谢”评论)