Il existe également le MATLAB Engine for Python de MathWorks lui-même. Si vous avez Matlab, cela peut valoir la peine d'être considéré (je ne l'ai pas essayé moi-même mais il a beaucoup plus de fonctionnalités que la simple lecture de fichiers Matlab). Cependant, je ne sais pas s'il est autorisé à le distribuer à d'autres utilisateurs (probablement pas de problème si ces personnes ont Matlab, sinon NumPy est peut-être la bonne façon d'y aller?).
Aussi, si vous voulez faire toutes les bases vous, MathWorks provides (si les changements de lien, essayez de google pour matfile_format.pdf
ou son titre MAT-FILE Format
) une documentation détaillée sur la structure du format de fichier. Ce n'est pas aussi compliqué que je pensais personnellement, mais de toute évidence, ce n'est pas le moyen le plus facile d'y aller. Cela dépend également du nombre de fonctionnalités des fichiers .mat
que vous souhaitez prendre en charge.
J'ai écrit un script Python "petit" (environ 700 lignes) qui peut lire des fichiers de base .mat
. Je ne suis ni un expert Python ni un débutant et il m'a fallu environ deux jours pour l'écrire (en utilisant la documentation de MathWorks ci-dessus). J'ai appris beaucoup de choses nouvelles et c'était très amusant (la plupart du temps). Comme je l'ai écrit le script Python au travail, je crains que je ne peux pas le publier ... Mais je peux donner quelques conseils ici:
- d'abord lire la documentation
- Utilisez un éditeur HEX-(tels que HxD) et regarder dans une référence
.mat
-file vous voulez analyser
- Essayez de comprendre la signification de chaque octet en enregistrant les octets dans un fichier txt et annoter chaque ligne
- Utilisez les classes pour enregistrer chaque donnée élément (tel que
miCOMPRESSED
, miMATRIX
, mxDOUBLE
ou miINT32
)
- La structure des fichiers
.mat
est optimale pour enregistrer les éléments de données dans une structure de données arborescente; chaque noeud a une classe et sous-noeuds
Didacticiel SciPy.io officiel: http://docs.scipy.org/doc/scipy/reference/tutorial/io.html –
scipy ne prend pas en charge les fichiers mat v7.3 (voir les notes [ici] (http : //docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.io.loadmat.html)). Voir la [réponse par vikrantt] (http://stackoverflow.com/a/19340117/674976) pour la solution. – texnic
Toutefois, vous pouvez enregistrer des fichiers mat en tant que versions antérieures. voir: http://www.mathworks.com/help/matlab/import_export/mat-file-versions.html (en-tête: 'Enregistrer dans la version MAT-File') – watsonic