загрузить файл .mat из python

Я пытаюсь запустить из Python скрипт в Matlab, который запускает режим Simulink, сохраняет переменную как Power.mat и читает эту переменную в Python. Я использую Python 2.7 в Windows.

Я попытался использовать библиотеку hdf5storage для чтения файла:

import hdf5storage
x=hdf5storage.loadmat('Power.mat','r')

но я получаю сообщение об ошибке. ошибка

В чем может быть проблема? Я также пробовал использовать библиотеку h5py, но получаю ту же ошибку. Файл .mat, похоже, не поврежден, так как я без проблем открываю его в Matlab.

Спасибо!


person Alessandra Cuneo    schedule 13.10.2016    source источник
comment
Это актуально? stackoverflow.com/questions/31287744/   -  person cdarke    schedule 13.10.2016
comment
x=hdf5storage.loadmat('Power.mat') должен работать, хотя загрузка пакетов, необходимых для его тестирования, занимает целую вечность :)   -  person Jean-François Fabre    schedule 13.10.2016
comment
Вы сохранили Power.mat как MAT-файл версии 7.3? Предыдущие версии не являются HDF5. Из MATLAB: type('Power.mat') сообщит вам версию файла MAT. Используйте save('Power.mat', '-v7.3'), чтобы указать версию.   -  person smn    schedule 13.10.2016
comment
Возможный дубликат Чтение файлов .mat в Python   -  person obchardon    schedule 13.10.2016


Ответы (2)


Вы можете использовать scipy.io для обмена данными между Python и Matlab. Для этой цели существуют функции savemat и loadmat.

Что-то вроде этого должно работать:

import scipy.io
mat = scipy.io.loadmat('Power.mat')

Для справки: http://docs.scipy.org/doc/scipy/reference/generated/scipy.io.loadmat.html

person minhduc    schedule 13.10.2016
comment
Существует четыре различных формата файла .mat. Первые три, v4, v6 и v7, являются проприетарными двоичными форматами. Это то, что scipy может открыть. Последний, v7.3, представляет собой специализированный файл hdf5. Вот что hdf5storage может открыть. Технически его можно открыть чем угодно, что может работать с файлами hdf5, но у hdf5storage есть некоторые инструменты для изящной обработки битов, специфичных для MATLAB. В противном случае вы получите довольно уродливый (но в конечном итоге пригодный для использования) вывод. - person TheBlackCat; 13.10.2016

Попробуйте этот код:

import h5py
Data = h5py.File('File.mat')
person RVK    schedule 13.10.2016
comment
Это бесполезно, это просто дает мне кучу эталонных объектов hd5. ничего не могу с ними сделать - person raaj; 11.03.2018