Собственный: плоский вид матрицы в шаблонной функции - PullRequest
0 голосов
/ 30 октября 2018

Для 1D изменения размеров, документация Eigen предлагает использовать следующий метод для изменения размера массива:

using Eigen;

MatrixXf X(2,2) << 1,2,3,4;
Map<RowVectorXf> v1(X.data(), X.size());

За исключением того, что у меня есть шаблонный вектор, и я не могу использовать RowVectorXf

using Eigen;
template<class num>
void my_func(){

  Matrix<num,Dynamic,Dynamic> X(2,2) << 1,2,3,4;

  Map<Matrix<num,Dynamic,Dynamic>> unraveled(X.data(),X.size());
}

Приведенный выше пример завершается ошибкой со следующим сообщением:

ошибка: статическое утверждение не выполнено: YOU_TRIED_CALLING_A_VECTOR_METHOD_ON_A_MATRIX

Как получить плоский вид собственной матрицы в шаблонной функции?

1 Ответ

0 голосов
/ 30 октября 2018

Проблема в том, что карта 2D, а не 1D, как вы действительно хотите:

Map<Matrix<num,Dynamic,1>> unraveled(X.data(),X.size());

Тогда теперь это векторная операция над вашей исходной матрицей X.

...