在eigen c ++中,你是怎么做的? 将vectorXf映射到matrixXf (适当的尺寸)
(有很好的docs 如何为外部对象做到这一点 所以我知道我们可以做到:
MatrixXf x_cen=Map<MatrixXf>(*x,*n,*p);
但如果x
是VectorXf
会怎样?
答案 0 :(得分: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);