Comment lire un Matlab cell array stocké sous forme de fichier .mat et ayant des données doubles multidimensionnelles 3 * 3 * 2 dans un tableau c/C++?Utiliser la matrice de cellules Matlab dans un programme C/C++
Répondre
Ce document décrit l'interface pour lire et écrire des fichiers MAT en C/C++:
http://www.mathworks.com/access/helpdesk/help/techdoc/matlab_external/f39876.html#f13830
Le format de fichier MatLab documented here. Ça n'a pas l'air trop poilu.
Editer: Désolé, le lien est corrompu.
Le lien de la documentation que vous avez suivi n'est plus valide. – iceman
Lien avec libmx.lib, libmat.lib, libeng.lib et inclut les en-têtes mat.h et engine.h. J'ignore le composant imaginaire des données et suppose que vous sachiez comment utiliser le STL C++. Le code ci-dessous est adéquate, mais une interface plus facile appelé mxWrapper est disponible ici: http://www.mathworks.com/matlabcentral/fileexchange/28331-replacement-for-mwarray-using-matlab-engine
vector<double> readSomeNumbers() {
vector<double> data;
mxArray *pMx=load("c:\\someFile.mat", "foobar");
if (!pMx) return data;
ASSERT(mxGetClassID(pMx) == mxDOUBLE_CLASS);
data.assign(mxGetPr(pMx), mxGetPr(pMx)+mxGetNumberOfElements(pMx));
mxDestroyArray(pMx);
return data;
}
mxArray *load(const string& fileName, const string& variableName)
{
MATFile *pmatFile = matOpen(fileName.c_str(), "r");
if(pmatFile == NULL)
return NULL;
mxArray* pMx = matGetVariable(pmatFile, variableName.c_str());
if(pMx == NULL)
{
matClose(pmatFile);
return NULL;
}
matClose(pmatFile);
return pMx;
}
- 1. Matlab: Affectation vectorisé de matrice double à matrice de cellules
- 2. Insertion de lignes dans la matrice MATLAB
- 3. erreur d'indexation de la matrice dans Matlab
- 4. Matrice de Python Matlab
- 5. MATLAB: Réduire les cellules de code dans l'éditeur de MATLAB
- 6. Vector à la matrice syntaxe dans Matlab
- 7. Comment puis-je accumuler des cellules de différentes longueurs dans une matrice dans MATLAB?
- 8. Comment affecter une matrice vide aux éléments d'un tableau de cellules dans MATLAB?
- 9. MATLAB formatage d'une matrice
- 10. MATLAB: pré-allocation de la matrice donne l'erreur
- 11. MATLAB: Extraire plusieurs parties d'une matrice sans utiliser de boucles
- 12. Conversion d'une matrice en MATLAB
- 13. MATLAB voir si quelque chose est inclus dans la matrice
- 14. MATLAB® - articles concaténer dans un réseau de cellules
- 15. Reconstruire la matrice à partir de diagonales dans matlab
- 16. MATLAB: Obtention d'un tableau de cellules de MATLAB à Java
- 17. comment obtenir l'inverse de la matrice dans matlab
- 18. Insérer des doubles dans un tableau de cellules dans un vecteur dans MATLAB
- 19. Tirer un sous-ensemble d'une matrice dans MATLAB
- 20. Création de tableaux de cellules imbriqués dans Matlab?
- 21. Que signifie CC? = Dans un Makefile?
- 22. comment sélectionner l'élément particulier de la matrice suivante? (Matlab)
- 23. Comment utiliser les données Matlab dans R?
- 24. MATLAB: comparaison des tableaux de cellules de la chaîne
- 25. Comment créer une matrice de doublons N-D dans un fichier MATLAB MEX?
- 26. appel à la fonction Matlab dans un programme Python
- 27. Travailler avec XLSWRITE dans MATLAB: Comment supprimer des cellules vides?
- 28. cellule à matrice correspondant/map/cellOperations (MATLAB)
- 29. Comparaison de valeurs d'éléments de matrice dans MATLAB
- 30. décomposition Eigen d'une matrice de forme W * diag (S) * W » pour la matrice exponentielle MATLAB
J'ai lu les documents, mais je suis un peu confus. Comment puis-je importer des données de la structure de données mxarray vers une structure de données primitive comme un double tableau multi-dim? Quelqu'un peut-il me donner un extrait de code .. – iceman
J'ai vu le fichier matdgns.c – iceman