Eigen3 / C ++:使用Vector3d平铺MatrixXd

时间:2017-11-08 09:49:18

标签: c++ matrix linear-algebra eigen3

Eigen3 / C ++'中最优雅的方式是什么?构建MatrixXd 来自重复的Vector3d。也就是说,给定行向量

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

目标是找到一个操作op,以便

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

提供一个由M行组成的矩阵N,等于V,即

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

类似于tilenumpy可以实现的目标。

1 个答案:

答案 0 :(得分:2)

矢量和密集表达式可以复制

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

当编译时N和/或方向已知时,也有相应的版本...