"Can only read from Matlab level 5 MAT-files"

"Can only read from Matlab level 5 MAT-files"

我正在尝试使用 mat4py 从 Matlab 将文件加载到我的 python 中。 我有以下错误

ParseError: Unexpected field name length: 43 

使用时

import h5py
from numpy import ndarray
data_py = loadmat("data.mat")

我听从了建议

所以,

explore_v73_matfile(file_name="data.mat", fptr=None, path=r"C:/Users/...mypath/data_folder")
data_100E = loadmat("data.mat")

但是,现在我有一个新的错误:

ParseError: Can only read from Matlab level 5 MAT-files

很遗憾,我不能分享 data.mat。有谁知道如何用我提供的少量信息解决这个问题?

MAT-File Format documentation (PDF) 表示 MAT 文件的最后一个二进制结构是“5 级 MAT 文件”。

This document describes the internal format of MATLAB Level 4 and Level 5 MAT-files. Level 4 MATfiles are compatible with versions of MATLAB up to Version 4. Level 5 MAT-files are compatible with MATLAB Versions 5 and up.

但是loadmat.py函数在第425-429行的注释中指出(截至2021年3月):

# Check mat file format is version 5
# For 5 format we need to read an integer in the header.
# Bytes 124 through 128 contain a version integer and an
# endian test string

如果您的 MAT 文件不兼容,loadmat.py 会输出错误。

 if maj_val != 1:
        raise ParseError('Can only read from Matlab level 5 MAT-files')

很可能您的 MAT 文件是很久以前创建的,或者是使用旧的 matlab 版本创建的,无法再使用 mat4py 读取。

您应该尝试使用 matlab 读取您的 MAT 文件并再次保存它们。