文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python读取mat文件中的struct问题

2024-04-02 19:55

关注

python读取mat文件中的struct

All devils are in the details,做个笔记。

mat文件结构如下

ground_truth_data 是1x1的struct(结构体),包含2个字段,一个是list,一个是imgszie.如图1所示

图1

list是一个352x1的cell,点开后如图2,可以看到list中的每一个cell又由1x1的strcuct组成.

图2

点开1x1的struct如图3:

图3 

如果我现在想把这352个1x1的struct值(包括imgname和bbox)都用python提出来然后以txt的格式存储,应该怎么做?

经过查找资料,总结如下

1、我使用scipy.io模块加载时,pycharm控制台报错如下:

这是因为scipy.io只能支持matlab版本小于v7.3版本的mat文件。

换句话说就是,如果你的matlab版本比较旧,保存的mat格式为-v7.3及其以前的版本,可以用scipy.io读取. 如果是比较新的matlab保存的mat文件,就只能用h5py模块载入了,并且它支持大文件的存储和读取.

解决办法

改用h5py模块载入mat并读取struct值,代码如下

import h5py
data = h5py.File("D:\\Build_my_net\\tensorflow-vgg-master\\tensorflow-vgg-master\help_others\\train_ground_truth_data.mat")
test = data['ground_truth_data/list']
print(test.shape)  #执行完这一行,输出的是(1,352) ,这里和python中numpy数组的shape返回的不一
#样,这里第一个值表示的列,第二个值表示的是行
for i in range(test.shape[1]):   #test.shape[1]的值是352
    for k in data[(test[0][i])].values():
        print(k[:])

如果有字符,记得用chr()函数转成字符后显示.

python读取mat文件报错

在用python读取mat文件时报了以下错误:OSError: Unable to create file

发现是自己mat文件格式的问题,原来直接在matlab中右键另存cell文件,但这种文件python打不开,需要用save函数保存才行

eg:

.save('Gaitdata.mat', 'originalData', '-v7.3') % v7.3 so that it is readable by h5py

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。 

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯