上一篇文章对DEAP数据集进行简单的介绍,以及对实验步骤进行大体的介绍。
这篇文章是接着上一篇,开始数据的截取操作。
在DEAP数据集中,data_preprocessed_matlab文件夹里的数据,是可以用matlab进行操作的,下来的操作都是对这个文件夹。
所以,我们再来详细了解一下这个文件夹的内容:
- 该文件夹包含s01.mat~s032.mat,表示32个被试者的数据。
- 其中每个.mat文件(s01.mat为例),包含data域和labels域,data域是40*40*8064的矩阵,labels是40*4的矩阵。
- data域的40*40*8064:第一个40是指40次试验,第二个40是指40个通道(前32个是脑电通道),8064是指63*128(63是时间63秒,128是采样频率)。
- labels域的40*4:其中40是指40次实验,4是指4个维度。
data_preprocessed_matlab中的数据长为 63s,去掉 3s 的基线之后,保留待处理的 60s 数据。考虑到由于在数据采集内初期以及实验任务将要结束阶段被试的功能脑网络的连接模式难以保持相对稳定,以及采集过程中,被试可能由于自身原因,如困倦、疲乏等,造成伪迹干扰或是由于计算时间过长而难以反映出被试本身的人脑情感加工效应等方面的影响,因此在构建网络之前首先将 60s 的时间序列等分为三份,每一段 20s,最终选定截选中间的第 21s-40s 的时间序列作为计算的时间序列。
由于这32个.mat文件处理方法都是类似的,所以,在这里我只以s01.mat为例进行处理,下来只需要进行批处理操作即可。
对s01.mat,我的思路是:
- 把一个被试者40次的实验数据拆成40个文件
- 同时截取其中的21–40s(算上基线的话就是24–40s)
- 截取前32个通道的数据(前32通道为脑电数据)
- 最终,生成一个对应的s01文件夹,s01文件夹中包含s01-1.mat–s01-40.mat共40个文件,其中每个文件(以s01-1.mat为例),包含data域和labels域,data域是32*2560(32个通道,2560是20s*128Hz),labels域是1*4(4个维度)
下来,附上代码:
x=load('E:\脑电数据集\data_preprocessed_matlab\s01.mat');
m=x.data;
m1=reshape(m,[40 40 63 128]);
pathname='E:\脑电数据集\截取后数据\';
for i=1:40
m2=m1(i,1:32,24:43,:);
m3=reshape(m2,[32 20*128]);
filename=sprintf('s01-%d',i);
save([pathname,filename],'m3');
end
对其他文件的处理都是类似的,用循环就好了,只不过需要注意一下文件名。这个文件的命名k<10时,是s0x;k>=10时,是sxx。
下来进行批处理就好啦~
该文章是学习笔记,后续会继续更新
下一篇文章的链接:基于互信息的EEG脑网络情感识别(三)