Eigen 3.4 .reshaped () - PullRequest
       24

Eigen 3.4 .reshaped ()

0 голосов
/ 30 мая 2019

Я хочу преобразовать собственный вектор в матрицу, а затем взять .colwise (). Sum ().

Команда изменения формы, описанная в руководстве Eigen, не компилируется (https://eigen.tuxfamily.org/dox-devel/group__TutorialReshape.html)

Следовательно, мой вопрос касается как нумерации версий Eigen (была ли выпущена версия Eigen 3.4?), Так и самой команды reshape (в моей ошибке компиляции написано, что «Eigen :: VectorXd не имеет члена с именем reshaped») и советам о эффективная альтернатива следующему:

VectorXd phi = X * beta; ArrayXd sumPhi = phi.reshaped(4,12).colwise().sum();

1 Ответ

2 голосов
/ 31 мая 2019

Eigen 3.4 не был выпущен (по состоянию на май 2019 г.), я предлагаю попробовать ветку разработки.

Поскольку phi является реальным объектом (а не выражением), вы можете достичь того жеиспользование Map:

ArrayXd sumPhi = MatrixXd::Map(phi.data(),4,12).colwise().sum();

Это должно работать с любой версией Eigen (по крайней мере, начиная с 3.0), но менее безопасно, так как не гарантирует, что количество элементов действительно совпадает (если phi имеет менее 4*12 элементов, это может привести к неправильной памяти).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...