No puedo entender cómo convertir una matriz de double [] al tipo Eigen :: Matrix4d.

Lo estoy intentando haciendo:

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

Donde M es: matd_t *M

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

Gracias por cualquier ayuda.

0
desmond13 8 dic. 2016 a las 20:00

1 respuesta

La mejor respuesta

Está bien. Este fue un error bastante estúpido :)

Encontré mi solución:

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

Básicamente, estaba usando C ++ map en lugar de la función Eigen Map.

Ahora funciona.

0
desmond13 8 dic. 2016 a las 20:07
2
Tenga en cuenta que puede asignarle un nombre para usar directamente sus datos durante el cálculo: Map<Matrix4d> transform(M->data);
 – 
ggael
8 dic. 2016 a las 22:05
1
Además, si desea inicializar una matriz (o vector) de tamaño fijo a valores de la memoria sin formato, puede usar el constructor de puntero sin formato: Eigen::Matrix4d transform(M->data); (esto copia los valores en lugar de mapear).
 – 
chtz
9 dic. 2016 a las 13:45