Eigen3/C++:用 Vector3d 平铺 MatrixXd

Eigen3/C++: Tile a MatrixXd with a Vector3d

'Eigen3/C++' 中构建 MatrixXd 最优雅的方法是什么 从重复 Vector3d。即给定一个行向量

     Eigen::Vector3d  V(v00, v01, v02);

目标是找到一个操作op使得

     Eigen::MatrixXd  M = op(V, N);

提供一个矩阵 MN 行组成,这些行等于 V,即

    /  v00  v01  v02  \
    |  v00  v01  v02  |
M = |      ...        |
    |                 | 
    \  v00  v01  v02  /

类似于 tilenumpy 中可以实现的效果。

向量和密集表达式可以复制:

V.rowwise().replicate(N).transpose() // or
V.transpose().colwise().replicate(N) // or
V.transpose().replicate(N,1) // or ...

其中Nand/or编译时知道方向也有对应的版本...