我有一个由Eigen::MatrixXd
的std::vector
制成的Eigen::Vector3d
。很容易。
我对该矩阵进行了一些转换操作,我希望返回结果作为Eigen::Vector3d
的std向量。
我该怎么做std::vector<Eigen::Vector3d>
表格Eigen::Matrix3d?
最佳答案
最好坚持使用std::vector
对象。这是我通常处理此类情况的方式:
std::vector<Vector3d> vecs(n);
auto mat = Matrix3Xd::Map(vecs[0].data(), 3, vecs.size());
这将在
vecs
拥有的数据上创建一个视图。然后根据需要使用mat
播放(当然,除了调整大小!),例如:mat = my_affine * mat;
无需将值从
mat
复制回vecs
,但是,当然,如果您已经准备好Matrix3Xf
或MatrixXf
并将其复制到vecs
,则只需编写:mat = other_mat;
前提是
vecs.size() == other_mat.cols()
,否则您需要先调整vecs
的大小并重新创建具有新大小的Map
。