Matlab绘制运动想象ERD/ERS分析法图像

Matlab绘制运动想象ERD/ERS分析法图像

    • 前言
    • 1.步骤
    • 2.数据
    • 3.代码
      • 3.1 plotERDERS.m
      • 3.2 plotERP.m
      • 3.3 filter_param.m
    • 结果
    • 最后

前言

   绘制Pfurtscheller等人提出的ERD/ERS分析方法[1],该分析在论文中比较常用,因此有必要学习一下如何绘制其图形。

1.步骤

  1. 对脑电信号进行带通滤波 ,频带范围为ERD/ERS现象出现的特征频带;

  2. 计算滤波后的脑电信号每个样本点的平方

  3. 对同类运动想象下的脑电信号做叠加平均

  4. 将得到的平均曲线采用滑动时间窗进行平滑处理

  5. 应用公式(1-1)

    在这里插入图片描述

其中,A为进行运动想象时的EEG,R是进行想象动作前该频段在参考时间内的能量值。

2.数据

   数据用的是BCIcompetition2002二分类MI数据(到我的博客资源就可以下载),x_train为需要绘制ERD/ERS的EEG数据,其维度为[1152 x 3 x 140],即128Hz采样率 x 9s数据(9 x 128=1152),3通道,140trials,其中第1通道对应C3电极,第3通道对应C4电极。而y_train为x_train对应的标签(标签中的1,2分别对应左MI和右MI)。
其电极位置和MI范式说明如下:
Matlab绘制运动想象ERD/ERS分析法图像_第1张图片
文件结构和数据结构如下:
Matlab绘制运动想象ERD/ERS分析法图像_第2张图片

3.代码

3.1 plotERDERS.m

%function:plot ERP waveform,author:mao,date:2020-11-24
function plotERDERS(datar1,labelr1,lower,higher,sampleRate,butterOrder,smoothPara)
%input datar1:3维度事件段EEG数据 数据格式[样本点 通道 trials]
%     labelr1:datar1对应的标签
%       lower:带通滤波参数
%      higher:带通滤波参数
%  sampleRate:采样率
% butterOrder:滤波阶数
%  smoothPara:平滑系数
%
%output figure:ERD/ERS图像
dataleft=[];                               %左手MI
dataright=[];                              %右手MI
dataThree=[];                              
k=1;
n=1;
m=1;
for i=1:size(datar1,3)                     %按标签提取tirlas
    if labelr1(i)==1 %L
        dataleft(:,:,k)=datar1(:,:,i);
        k=k+1;
    elseif labelr1(i)==2 %R
        dataright(:,:,n)=datar1(:,:,i);
        n=n+1;
    else
        dataThree(:,:,m)=datar1(:,:,i);
        m=m+1;
    end
end
plotERP(dataleft,lower,higher,sampleRate,butterOrder,smoothPara);                       %左手MI ERD/ERS
title('left hand movement');
plotERP(dataright,lower,higher,sampleRate,butterOrder,smoothPara);                      %右手MI ERD/ERS
title('right hand movement');

3.2 plotERP.m

function plotERP(data,lower,higher,sampleRate,butterOrder,smoothPara)
R_start=1;    %参考时间段R的开始时间
R_end=2;      %参考时间段R的结束时间
%% 频带滤波     
[simplepoint,ch,trials]=size(data); 
for i=1:trials                        %step1:bandpass
    filter_tmp=filter_param(data(:,:,i),lower,higher,sampleRate,butterOrder);
    data(:,:,i)=filter_tmp;
end
%%
C3=0; 
C4=0;
data=permute(data,[1 3 2]);       
data=data.^2;                         %step2:Squaring

for i=1:size(data,2)      %叠加
    C3=C3+data(:,i,1);  %ch1
    C4=C4+data(:,i,3);  %ch3
end
C3=C3/trials;                         %step3: Averaging over N triasl
C4=C4/trials;

C3=smooth(C3,smoothPara);             %step4: smoothing
C4=smooth(C4,smoothPara);

C3mean=C3(sampleRate*R_start:sampleRate*R_end-1);                  
C4mean=C4(sampleRate*R_start:sampleRate*R_end-1);

C3m=0;
C4m=0;
for i=1:sampleRate
    C3m=C3m+C3mean(i);
    C4m=C4m+C4mean(i);
end
C3m=C3m/sampleRate;
C4m=C4m/sampleRate;
C3=((C3-C3m)/C3m)*1;                   %step5:A-R/R*100%               
C4=((C4-C4m)/C4m)*1;


figure;                                  
plot(C3,'r','LineWidth',2);
hold on
plot(C4,'b','LineWidth',2);
legend('C3','C4');
xlim(gca,[0 1152]);
set(gca,'XTick',[0 128 256 384 512 640 768 896 1024 1152],'XTickLabel',...
    {'0','1','2','3','4','5','6','7','8','9'});

3.3 filter_param.m

%% 对数据进行滤波
%输入:data 待滤波EEG数据
%   low        高通滤波参数设置
%   high        低通滤波参数设置
%   sampleRate          采样率
%   filterorder  butterworth滤波器阶数
%返回:filterdata       滤波后EEG数据
function filterdata=filter_param(data,low,high,sampleRate,filterorder)
%% 设置滤波参数
 filtercutoff = [low*2/sampleRate high*2/sampleRate];  %带通频率filtercutoff
[filterParamB, filterParamA] = butter(filterorder,filtercutoff); %butter(param1,param2):param1为butterworth滤波器阶数,param2为带通频率
 filterdata= filter( filterParamB, filterParamA, data);

结果

命令行调用函数运行

plotERDERS(x_train,y_train,8,12,128,6,80); 

   下图为左右手运动想象时的ERD/ERS图像,其中运动想象时间为3-9s(下图中虚线即为MI任务提示开始时间)。
   plotERDRES.m中的输入参数会影响ERDERS绘制出来的形状,虽然参数不同细节有所不同,但曲线大体趋向还是相似的。
Matlab绘制运动想象ERD/ERS分析法图像_第3张图片

最后

   步骤中的R的值我是取了进行想象前的1-2 s内这一段时间的1s数据(对应plotERP.m中的R_start=1以及R_end=2),然后对这1s数据取平均,不知道这样做是否合理。下图中的阴影部分为论文中的R。
Matlab绘制运动想象ERD/ERS分析法图像_第4张图片
参考文献:
[1] Pfurtscheller G, Lopes da Silva FH. Event-related EEG/MEG synchronization and desynchronization: basic principles. Clinical Neurophysiology, 1999, 110: 1842~1857.

你可能感兴趣的:(运动想象脑电相关,matlab,图计算)