用Matlab完成“PhysioNet MI”数据集裁切、处理与存储(附完整代码)

用Matlab完成 PhysioNet MI 数据集裁切、处理与存储(附完整代码)

数据集描述(以运动想象数据为例)

数据集地址:https://physionet.org/content/eegmmidb/1.0.0/
其包含109个用户的运动想象与真实运动数据,每个用户都会执行以下四种任务:

  • Task 1 = ”左拳或右拳打开或关闭,真实的运动“
  • Task 2 = ”想象左拳或右拳的开合,实际不进行运动“
  • Task 3 = ”左脚或右脚打开或关闭,真实的运动“
  • Task 4 = ”想象左脚或右脚打开或关闭,实际不进行运动“

每个用户会按照图中顺序,进行不同的Task,共进行14轮次,数据集将轮次称为”run“。每一”run“中(除去1、2的基线”run“),数据包含对应Task的30个样本,采样率为160Hz,通道数为64。

数据集格式(以运动想象数据为例)

将数据下载完毕后,共109个文件夹,对应109名被试者的数据,如下图所示:

每个文件夹中,可以寻找到每一轮次(Run)的”.edf“数据,共14个edf文件与其对应的”.event“文件:

数据集读取(附完整代码)

这里我利用Matlab读取EEG数据,读取前需要安装EEGLab,这个网上很多教程,大家自行搜索。利用EEGLab的"pop_biosig"函数完成对应“.edf”数据的读取,如若出现报错大家记得在EEGLab中更新这个函数。
读取时只需指定对应的“subject”与“run”就可以,如读取第一个用户第三个run的数据(即读取“S001R03.edf”),代码如下:

subject = 1;
Run = 3;
Physio_data_path = '你存放数据集的路径\';
 if subject < 10
        if Run < 10
            EEG = pop_biosig([Physio_data_path, 'S00', int2str(subject), '\', ...
                 'S00', int2str(subject), 'R0', int2str(Run), '.edf']); % 将edf文件数据加载至EEGlab
            event_path = [Physio_data_path, 'S00', int2str(subject), '\'];
            filename = ['S00', int2str(subject), 'R0', int2str(Run), '.edf'];
        else
            EEG = pop_biosig([Physio_data_path, 'S00', int2str(subject), '\'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值