Существует также MATLAB Engine for Python от MathWorks. Если у вас есть Matlab, это может стоить внимания (я сам не пробовал, но у него гораздо больше функциональности, чем просто чтение файлов Matlab). Однако я не знаю, разрешено ли распространять его другим пользователям (возможно, нет проблем, если у этих людей есть Matlab, иначе возможно, что NumPy - это правильный путь?).
Кроме того, если вы хотите сделать все основы самостоятельно, MathWorks provides (если изменения ссылок, попробуйте Google для matfile_format.pdf
или ее названия MAT-FILE Format
) в подробной документации по структуре формата файла. Это не так сложно, как я лично думал, но, очевидно, это не самый простой способ. Это также зависит от того, сколько функций файлов .mat
вы хотите поддержать.
Я написал «маленький» (около 700 строк) скрипт Python, который может читать некоторые базовые файлы .mat
. Я не эксперт Python и не новичок, и мне потребовалось около двух дней, чтобы написать его (используя приведенную выше документацию MathWorks). Я узнал много нового, и это было довольно весело (в большинстве случаев). Как я уже написал сценарий Python на работе, я боюсь, что я не могу опубликовать его ... Но я могу дать несколько советов здесь:
- Сначала прочитайте документацию
- Используйте HEX-редактор (такие как HxD) и посмотреть в ссылку
.mat
-file вы хотите разобрать
- Пытаться выяснить значение каждого байта, сохранив байты в текстовом-файл и аннотирования каждой строку
- Используйте классы для сохранения данных каждых элемент (например,
miCOMPRESSED
, miMATRIX
, mxDOUBLE
или miINT32
)
- Структура файлов
.mat
является оптимальной для сохранения элементов данных в древовидной структуре данных; каждый узел имеет один класс и подузлы
Официальный учебник по SciPy.io: http://docs.scipy.org/doc/scipy/reference/tutorial/io.html –
scipy не поддерживает матовые файлы v7.3 (см. Примечания [здесь] (http : //docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.io.loadmat.html)). См. [Ответ by vikrantt] (http://stackoverflow.com/a/19340117/674976) для решения. – texnic
Однако вы можете сохранить mat-файлы как более ранние версии. см. http://www.mathworks.com/help/matlab/import_export/mat-file-versions.html (заголовок: «Сохранить в версии MAT-файла Nondefault») – watsonic