首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查MAT文件是否在未加载时损坏

检查MAT文件是否在未加载时损坏
EN

Stack Overflow用户
提问于 2016-07-12 09:37:51
回答 1查看 2.1K关注 0票数 0

我有一个由大量.mat文件组成的数据集。每个.mat文件都有相当大的大小,即加载它们很费时。不幸的是,其中一些文件已损坏,load('<name>')在这些文件上返回错误。我已经实现了一个尝试-捕获例程,以确定哪些文件已损坏。但是,考虑到只有少数文件损坏的情况,加载每个文件并检查它是否损坏是占用时间的。有没有办法不使用.mat来检查load('<name>')文件的健康状况?

我在任何地方都未能找到这样的解决办法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-12 11:24:30

matfile函数用于访问MAT文件中的变量,而不将它们加载到内存中.通过将尝试捕获例程更改为使用matfile而不是load,可以减少将大型文件加载到内存中的开销。

由于matfile只在读取损坏的文件时发出警告,因此必须检查是否发出了此警告。这可以在调用lastwarnlastwarn之前使用matfile:清除matfile,并检查警告是否在之后发出:

代码语言:javascript
复制
lastwarn('');
matfile(...);
[~, warnId] = lastwarn;
if strcmp(warnId, 'relevantWarningId')
    % File is corrupt
end

您必须首先通过在损坏的文件上运行上述代码并保存warnId来查找相关的警告id。

一个更健壮的解决方案是在创建文件时计算文件的校验和或散列(例如MD5),并在读取文件之前对此校验和进行比较。

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

https://stackoverflow.com/questions/38325121

复制
相关文章

相似问题

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