我有一个由Eigen::MatrixXdstd::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,但是,当然,如果您已经准备好Matrix3XfMatrixXf并将其复制到vecs,则只需编写:

mat = other_mat;


前提是vecs.size() == other_mat.cols(),否则您需要先调整vecs的大小并重新创建具有新大小的Map

08-16 21:38