基于互信息的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 …


分解后,即建立下面的分解树:
基于互信息的EEG脑网络情感识别(三)


下一步,对结点进行重构,并对处理的信号进行叠加
对结点重构以及信号叠加代码如下:

	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脑网络情感识别(三)
该文章是学习笔记,后续会继续更新
下一篇文章的链接:基于互信息的EEG脑网络情感识别(四)