首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法读取垫子文件

无法读取垫子文件
EN

Stack Overflow用户
提问于 2017-03-05 10:35:39
回答 4查看 9.3K关注 0票数 9

我正在尝试使用scipy读取matlab文件。

代码语言:javascript
运行
复制
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..。为什么?:

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-03-05 13:13:50

这个问题似乎是由压缩引起的。.mat文件从第7版开始自动压缩。

因此,我建议尝试将该文件保存在先前未压缩的.mat文件版本6中:

代码语言:javascript
运行
复制
save(filename, 'data', '-v6');
票数 7
EN

Stack Overflow用户

发布于 2018-12-04 16:42:21

问题在于scipy.io.loadmatverify_compressed_data_integrity关键字参数(默认为True )。它试图对标头进行一些错误检查,但即使数据提取得很好也会引发错误。请参阅与此相关的GitHub问题。我不确定全职关闭该关键字的含义,但如果您使用以下方法,它将同时解决您的问题(我无法对照您的数据检查它,它在提供的网址上不再可用)。

代码语言:javascript
运行
复制
import scipy.io as sio

data = sio.loadmat(filepath, verify_compressed_data_integrity=False)
票数 2
EN

Stack Overflow用户

发布于 2017-03-05 17:44:23

我可以用Octave加载两个文件,并重写导致问题的文件。

代码语言:javascript
运行
复制
>> data1 = load('part_0001.mat');
>> save -v7 part_0002.mat -struct data1

在Python中,重写的文件加载得很好,就像0000.mat文件一样。

代码语言:javascript
运行
复制
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,也是可加载的。

代码语言:javascript
运行
复制
>> save -v6 part_0003.mat -struct data1

因此,在loadmat's处理V7格式时一定会出现一些故障。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42607271

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档