如何在pycharm中加载.mat文件


前言

我在matlab中存了2个.mat文件
其中EEG_data大于2G,所以存的时候是以v7.3版本存的
另外EEG_labels比较小,所以存的时候不是v7.3版本

EEG_data的维度是40×32×8064×32
EEG_labels的维度是40×4×32


一、EEG_labels的读写

由于EEG_labels不是v7.3版本存储的,所以直接调用

import scipy.io as scio
import numpy as np
filepath = 'E:\DEAP_matlab\DEAP数据集\data_preprocessed_matlab/EEG_labels.mat'
dict_labels= scio.loadmat(filepath)
EEG_labels=dict_labels['EEG_labels']	#其中dict_labels的Key只有EEG_labels
EEG_labels=np.array(EEG_labels)
print(EEG_labels.shape)

运行结果是
(40, 4, 32)
说明导入的数据没有发生倒置

二、EEG_data的读写

由于EEG_data是保存的v7.3版本,如果我还用上边的方法scipy.io.loadmat函数加载数据会出现错误

NotImplementedError: Please use HDF reader for matlab v7.3 files

只能用另一种方法:

import h5py
import numpy as np
with h5py.File("E:\DEAP_matlab\DEAP数据集\data_preprocessed_matlab/EEG_data.mat") as f:
    EEG_data = f["EEG_data"][:]
EEG_data = np.matrix.transpose(EEG_data)		#这里的transpose函数的功能就是保持原来的维度在原来的位置
print(EEG_data.shape)

所以打印出来的是我想要的
(40, 32, 8064, 32)

加入这里没用到transpose

import h5py
import numpy as np
with h5py.File("E:\DEAP_matlab\DEAP数据集\data_preprocessed_matlab/EEG_data.mat") as f:
    EEG_data = f["EEG_data"][:]
EEG_data = np.array(EEG_data)
print(EEG_data.shape)

打印出来的维度是
(32, 8064, 32, 40)
维度发生了变化

总结

记录一下,对于v7.3版本的mat文件和非v7.3版本的mat文件的读写不一样,同时得注意维度变换的问题。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值