我正在尝试使用scipy读取matlab文件。
import scipy.io as sio
data = sio.loadmat(filepath)但我明白错误
ValueError: Did not fully consume compressed contents of an miCOMPRESSED element. This can indicate that the .mat file is corrupted.
在Matlab中,我可以打开这个文件,没有任何问题。我也想再救一次,但什么都没变.你能帮帮我吗?
在这里:zYaCJanZfOUVIcGJyR0E你可以找到两个文件以同样的方式保存。
我可以打开part_000,但不能打开part_001..。为什么?:
发布于 2017-03-05 13:13:50
这个问题似乎是由压缩引起的。.mat文件从第7版开始自动压缩。
因此,我建议尝试将该文件保存在先前未压缩的.mat文件版本6中:
save(filename, 'data', '-v6');发布于 2018-12-04 16:42:21
问题在于scipy.io.loadmat的verify_compressed_data_integrity关键字参数(默认为True )。它试图对标头进行一些错误检查,但即使数据提取得很好也会引发错误。请参阅与此相关的GitHub问题。我不确定全职关闭该关键字的含义,但如果您使用以下方法,它将同时解决您的问题(我无法对照您的数据检查它,它在提供的网址上不再可用)。
import scipy.io as sio
data = sio.loadmat(filepath, verify_compressed_data_integrity=False)发布于 2017-03-05 17:44:23
我可以用Octave加载两个文件,并重写导致问题的文件。
>> data1 = load('part_0001.mat');
>> save -v7 part_0002.mat -struct data1在Python中,重写的文件加载得很好,就像0000.mat文件一样。
In [8]: data2=loadmat('part_0002.mat')
In [10]: data2.keys()
Out[10]: dict_keys(['RealTime', 'AccNorm', 'Alt', 'FsP', 'DeviceTime', 'FsA', 'Acc', 'imatemp', 'Time', '__version__', '__globals__', '__header__'])重写的文件实际上要小一点。一个V6文件是13M,也是可加载的。
>> save -v6 part_0003.mat -struct data1因此,在loadmat's处理V7格式时一定会出现一些故障。
https://stackoverflow.com/questions/42607271
复制相似问题