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 /
类似于tile
中numpy
可以实现的目标。
答案 0 :(得分:2)
矢量和密集表达式可以复制:
V.rowwise().replicate(N).transpose() // or
V.transpose().colwise().replicate(N) // or
V.transpose().replicate(N,1) // or ...
当编译时N和/或方向已知时,也有相应的版本...