2

在 eigen c++ 中,如何将 vectorXf 映射到 matrixXf (适当尺寸)

(关于如何为外部对象执行此操作有很好的文档,所以我知道我们可以做到:

MatrixXf x_cen=Map<MatrixXf>(*x,*n,*p);

但如果x是 aVectorXf怎么办?

4

1 回答 1

3

您可以使用 .data() 成员函数,后跟 Map:

VectorXf vec(rows*cols);
vec = ...;
Map<MatrixXf> vec_view_as_a_matrix(vec.data(), rows, cols);

然后您可以像使用任何 Eigen 对象一样使用 vec_view_as_a_matrix,对 vec_view_as_a_matrix 的修改也将报告给 vec,因为它们共享内存。如果要复制到新的 MatrixXf 对象,请使用您编写的构造:

MatrixXf x_cen = Map<MatrixXf>(vec.data(), rows, cols);
于 2012-11-15T10:32:50.960 回答