在 eigen c++ 中,如何将 vectorXf 映射到 matrixXf (适当尺寸)
(关于如何为外部对象执行此操作有很好的文档,所以我知道我们可以做到:
MatrixXf x_cen=Map<MatrixXf>(*x,*n,*p);
但如果x
是 aVectorXf
怎么办?
在 eigen c++ 中,如何将 vectorXf 映射到 matrixXf (适当尺寸)
(关于如何为外部对象执行此操作有很好的文档,所以我知道我们可以做到:
MatrixXf x_cen=Map<MatrixXf>(*x,*n,*p);
但如果x
是 aVectorXf
怎么办?
您可以使用 .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);