如何在pycharm中加载.mat文件

如何在pycharm中加载.mat文件,第1张

文章目录
  • 前言
  • 一、EEG_labels的读写
  • 二、EEG_data的读写
  • 总结


前言

我在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文件的读写不一样,同时得注意维度变换的问题。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/728042.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-26
下一篇 2022-04-26

发表评论

登录后才能评论

评论列表(0条)

保存