python读取mat数据文件

前言

最近使用matlab的时频分析工具包处理了一组数据,然后将其特征保存为mat文件交由python做进一步处理。这里用到了一些使用python对matlab保存的mat数据文件的读取的操作以及过程中的一些问题,在此做一个记录,希望也能给遇到同样问题的盆友一些帮助。

关于mat文件版本的问题

  1. 在Python中读取MATLAB v7.3以前的.mat文件使用scipy中的scipy.io
import scipy.io as scio
filepath = 'D:/aaa/bbb.mat'
dict_data = scio.loadmat(filepath)
array_data = dict_data['array_name']

得到的dict_data 是一个字典,可以用dict_data .keys()查看其中包含的变量名,然后再通过dict_data ['变量名']来读取数据即可

  1. v7.3版本以后的.mat文件(-v7.3版本能支持较大的文件)需要使用h5py进行读取,在使用h5py之前首先要安装h5py。
import h5py
filepath = 'D:/aaa/bbb.mat'
dict_data = h5py.File(filepath)
array_data = dict_data['array_name']  

array_name通常都与数据名相同

当mat中存的是一个cell数据怎么办?

这一部分参考这篇博客https://blog.csdn.net/u013630349/article/details/47111773
写得特别好特别详细

array_data =[dict_data[ele[nele]][:] for ele in dict_data['array_name']]

但是读出来的数据是个list,需要用np.array(data)将其转换成数组
还有一点就是从python中读出来的数据是转置了的

关于一些错误

这两个错误的产生原因都是因为用了错误的方式读取了不适合版本的数据
这个是由于用scipy.io读取了v7.3版本的数据文件

Please use HDF reader for matlab v7.3 files

这个是由于用h5py读取了较低版本的数据文件

OSError: Unable to create file (unable to open file: name = 'D:\target\target1.mat', 
errno = 17, error message = 'File exists', flags = 15, o_flags = 502)

换成正确函数读取就好了~

  • 12
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值