基于互信息的EEG脑网络情感识别(三)
上一篇文章对DEAP数据集中的data_preprocessed_matlab文件夹的文件进行了数据的截取。
这篇文章是接着上一篇,将数据按频率分成四个波段。
用到的数据是在上一篇文章中处理之后生成的数据。
将经过降采样率的样本通过小波包分解,得到 Theta(4–7Hz)、Alpha(8–13Hz)、Beta(13–30Hz)。小波包分解能够将频带进行多层进一步划分,相对于小波变换而言,能够将没有细分的高频部分进一步细分。由于研究中使用到的相位锁值对于窄带信号较为敏感,而 Beta 段频带较宽,因此又进一步将 Beta 波段划分为低频的 Beta1(13–20Hz)和高频的 Beta2(20–30Hz)。
小波包分解(Matlab 函数 wpdec,母函数为 db20)得到 4 个频段下的数据序列。
注:关于小波包分解,如果不太熟悉的话,这里推荐一个博客,我当时是参考这个学习的:小波包分解与信号重构
由于要分的波段是:(重叠部分归到后面波段)
- Theta(4–8Hz)
- Alpha(8-13Hz)
- Beta1(13-20Hz)
- Beta2(20–30Hz)
采样频率为128Hz,则奈奎斯特频率为64Hz(概念而已,自行百度一下)
我准备建立的分解树是6层的(不算(0,0)那一层),这样,最底层的结点跨度范围就是1Hz。
分解代码如下:(其中A表示一维的信号)
wpt=wpdec(A,n,'db20');
其中结点(6,0)表示0–1Hz,(6,1)表示1–2Hz,(6,2)表示2–3Hz …
分解后,即建立下面的分解树:
下一步,对结点进行重构,并对处理的信号进行叠加
对结点重构以及信号叠加代码如下:
cfs01=wprcoef(wpt,[6 4]);
cfs02=wprcoef(wpt,[6 5]);
cfs03=wprcoef(wpt,[6 6]);
cfs04=wprcoef(wpt,[6 7]);
cfs0=cfs01+cfs02+cfs03+cfs04;
下来,还是附上一个整体处理的代码:
(A是一维数据,所以拆成每行进行处理,完成后再进行拼接)
pathname='E:\脑电数据集\s01-1\';
x=load('E:\脑电数据集\截取后数据\s01\s01-1.mat');
xx=x.data;
n=6;
Theta=[];
for i=1:32
A=xx(i,:);
wpt=wpdec(A,n,'db20');
plot(wpt);
cfs01=wprcoef(wpt,[6 4]);
cfs02=wprcoef(wpt,[6 5]);
cfs03=wprcoef(wpt,[6 6]);
cfs04=wprcoef(wpt,[6 7]);
cfs0=cfs01+cfs02+cfs03+cfs04;
%filename=sprintf('Theta-%d',i);
%save([pathname,filename],'cfs0');
filename='Theta';
Theta=[Theta;cfs0];
save([pathname,filename],'Theta');
end
该代码只对s01\s01-1.mat的数据进行了处理,而且只提取了Theta波段的数据
其他波段的提取,以及后续的批处理操作就不做叙述了
该文章是学习笔记,后续会继续更新
下一篇文章的链接:基于互信息的EEG脑网络情感识别(四)