使用scipy.io加载.mat文件出错(ValueError: Mat 4 mopt格式错误)

3

我目前正在尝试使用scipy在python中加载.mat文件,以下是代码:

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

然而,在运行该命令时,我遇到了错误:
ValueError: Mat 4 mopt wrong format, byteswapping problem?

这个错误信息是什么意思?我尝试加载的文件有问题吗? 当涉及到编程时,我是个新手,所以非常感谢任何建议:)如果有更好的方法来在Python中加载.mat文件,我也很乐意听取。提前致谢!


@hpaulj 感谢您的回复,我发现这些文件是7.3 MAT文件、HDF5文件类型,因此不受SciPy支持,我可能会尝试使用h5py。 - Anisha Singh
我将添加一些标签以便更容易地找到它。随着7.3变得越来越普遍,我们会看到更多这种错误。 - hpaulj
1个回答

1
我以前从未见过这个错误,但它是由scipy/scipy/io/matlab/mio4.py中的第113行产生的。
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(Level 1.0)、v6和v7到7.2 mat文件。

你知道这个文件是如何在MATLAB中保存的吗?有任何格式规范吗?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接