【发布时间】:2017-11-02 23:58:19
【问题描述】:
假设我有一个 6 维的Eigen::VectorXd
Eigen::VectorXd flat;
flat.resize(6);
flat << 1,2,3,4,5,6;
我想将其展开为 2x3 维 Eigen::MatrixXd
1,2,3,
4,5,6
如何最有效地完成这项工作?
【问题讨论】:
假设我有一个 6 维的Eigen::VectorXd
Eigen::VectorXd flat;
flat.resize(6);
flat << 1,2,3,4,5,6;
我想将其展开为 2x3 维 Eigen::MatrixXd
1,2,3,
4,5,6
如何最有效地完成这项工作?
【问题讨论】:
不确定效率,但这会起作用:
Eigen::Map<Eigen::MatrixXd> M(flat.data(), 3, 2);
Eigen::MatrixXd M2(M.transpose());
您的矩阵 M2 是所需的矩阵。
【讨论】:
一个更直接的变体(在内部,cantordust 的答案归结为相同):
typedef Matrix<double,Dynamic,Dynamic,RowMajor> RowMatrixXd;
MatrixXd M = RowMatrixXd::Map(flat.data(), 2, 3);
【讨论】: