Ошибка при загрузке файла .mat с помощью scipy.io (ValueError: Mat 4 mopt неверный формат)

В настоящее время я пытаюсь загрузить файл .mat в python, используя scipy и следующий фрагмент кода:

from scipy import io as sio
data= "file.mat"
output= sio.loadmat(data)

Однако при запуске команды я получаю сообщение об ошибке:

ValueError: Mat 4 mopt wrong format, byteswapping problem?

Что означает это сообщение об ошибке? Есть ли проблема с файлом, который я пытаюсь загрузить? Я совсем новичок, когда дело доходит до программирования, поэтому буду очень признателен за любые предложения :) Если есть лучший способ загрузки файлов .mat в python, я тоже готов выслушать их. Заранее спасибо!


person Anisha Singh    schedule 25.06.2016    source источник
comment
@hpaulj Спасибо за ваш ответ, я узнал, что эти файлы представляют собой 7.3 MAT-файлы, типы файлов HDF5, поэтому они не поддерживаются SciPy, вместо этого, вероятно, попробую h5py.   -  person Anisha Singh    schedule 27.06.2016
comment
Я собираюсь добавить пару тегов, чтобы это было легче найти. Чем больше 7.3 становится более распространенным, тем чаще мы видим эту ошибку.   -  person hpaulj    schedule 27.06.2016


Ответы (1)


Я никогда раньше не видел эту ошибку, но она создается строкой 113 в scipy/scipy/io/matlab/mio4.py.

def read_header(self):
    ''' Read and return header for variable '''
    data = read_dtype(self.mat_stream, self.dtypes['header'])
    name = self.mat_stream.read(int(data['namlen'])).strip(b'\x00')
    if data['mopt'] < 0 or data['mopt'] > 5000:
        raise ValueError('Mat 4 mopt wrong format, byteswapping problem?')
    ...

Обычно loadmat является правильным загрузчиком файлов, по крайней мере, среди поддерживаемых типов:

v4 (уровень 1.0), v6 и от v7 до 7.2 matfiles поддерживаются.

Вы знаете что-нибудь о том, как этот файл был сохранен в MATLAB? Любые спецификации формата, такие как эти?

person hpaulj    schedule 25.06.2016