2016-12-08 11 views
0

Я не могу понять, как преобразовать массив double [] в тип Eigen :: Matrix4d.Преобразование double [] в Eigen :: Matrix4d

Я пытаюсь, выполнив:

Eigen::Matrix4d transform = map<Eigen::Matrix4d>(M->data,M->nrows,M->ncols); 

Где М: matd_t *M

typedef struct 
{ 
    int nrows, ncols; 
    double data[]; 
// double *data; 
} matd_t; 

Спасибо за любую помощь.

ответ

0

Хорошо. Это было довольно глупая ошибка :)

Я нашел решение:

Eigen::Matrix4d transform = Eigen::Map<Eigen::Matrix4d>(M->data,M->nrows,M->ncols); 

В основном я использую C++ map вместо функции Эйген карт.

Теперь это работает.

+2

Обратите внимание, что вы можете назвать его для непосредственного использования ваших данных во время вычисления: 'Map transform (M-> data);' – ggael

+1

Кроме того, если вы хотите инициализировать матрицу (или вектор) фиксированного размера для значений из raw memory, вы можете использовать конструктор raw-pointer: 'Eigen :: Matrix4d transform (M-> data);' (это копирует значения вместо отображения). – chtz