2017-04-14 1 views
1

J'ai donc un fichier matlab qui est une matrice 3d. J'utilise C++ pour lire dans le fichier, en particulier avec matio.h mais j'ai quelques problèmes/confusion avec la lecture des données réelles. Je sais comment savoir combien de dimensions, de rang et de nom des données, mais lire réellement dans les données est la partie la plus difficile. Actuellement, j'aiOuverture d'un fichier MATLAB 3D en C++ avec Matio

mat_t *mat = Mat_Open(result, MAT_ACC_RDONLY); 
matvar_t *matvar; 
matvar = Mat_VarReadNExtInfo(mat); 
int r = matvar->dims[0]; 

Je suppose que je suis confus quant à la façon d'utiliser le matvar-> pointeur de données.

Répondre

0

Vous pouvez sélectionner votre variable en utilisant:

matvar_t *matVar = NULL;  
matVar = Mat_VarRead(mat, (char*)"VarName"); 

La lecture des données est possible grâce à:

unsigned Size = matVar->nbytes/matVar->data_size ; 
const double *Data = static_cast<const double*>(matVar->data) ; 
for(int i=0; i<Size; ++i) 
{ 
    std::cout<<"\t["<<i<<"] = "<<Data[i]<<"\n" ; 
} 

Comme il est de code C les valeurs sont derrière l'autre dans la mémoire. Avec cette solution, vous devez transformer vous-même le double tableau en un tableau 3D en utilisant les dimensions.

Une autre solution pourrait utiliser la fonction Mat_VarReadDataAll.