В eigen C ++, как вы
сопоставить vectorXf с matrixXf
(соответствующих размеров)
(есть хороший документы на
как это сделать для внешних объектов
так что я знаю, что мы можем сделать:
MatrixXf x_cen=Map<MatrixXf>(*x,*n,*p);
но что, если x
это VectorXf
?
Вы можете использовать функцию-член .data (), а затем Map:
VectorXf vec(rows*cols);
vec = ...;
Map<MatrixXf> vec_view_as_a_matrix(vec.data(), rows, cols);
Затем вы можете использовать vec_view_as_a_matrix точно так же, как и любые другие Eigen-объекты, об изменениях в vec_view_as_a_matrix будет сообщаться и vec, поскольку они совместно используют память. Если вы хотите скопировать в новый объект MatrixXf, используйте конструкцию, которую вы написали:
MatrixXf x_cen = Map<MatrixXf>(vec.data(), rows, cols);
Других решений пока нет …