eigen :: vectorXf到MatriXf map

时间:2012-11-15 10:20:18

标签: c++ eigen

在eigen c ++中,你是怎么做的? 将vectorXf映射到matrixXf (适当的尺寸)

(有很好的docs 如何为外部对象做到这一点 所以我知道我们可以做到:

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

但如果xVectorXf会怎样?

1 个答案:

答案 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);