学号:17020150056 姓名:张伟航
【嵌牛导读】。当一个恒定频率(通常大于5Hz)对人眼进行不断刺激时,这种剌激会调制大脑视皮层的脑电信号,这种被外界频率所调制的脑电信号就是稳态视觉诱发电位。SSVEP在频谱上由与视觉刺激频率成整数倍关系的频率成分组成。例如:一个7Hz的调制频率刺激眼球时,则会诱发7Hz、14Hz和21Hz等频率的脑电信号。所以SSVEP是周期性的信号,信号处理模型可用成整倍数关系的一系列正弦波组合来表示SSVEP。
【嵌牛鼻子】SSVEP信号 脑机接口 脑电信号
【嵌牛正文】
SSVEP数据处理
一、研究背景与原理简介
当一个外界的视觉刺激刺激到人眼时,在脑部的视皮层就会产生相应的变化,产生相应的电活动,这种信号就是视觉诱发电位。当一个恒定频率(通常大于5Hz)对人眼进行不断刺激时,这种剌激会调制大脑视皮层的脑电信号,这种被外界频率所调制的脑电信号就是稳态视觉诱发电位。
通过对这种脑电信号进行频谱分析,找出一种特殊的目标频率,就能判断出被试选择哪个目标。SSVEP在频谱上由与视觉刺激频率成整数倍关系的频率成分组成。例如:一个7Hz的调制频率刺激眼球时,则会诱发7Hz、14Hz和21Hz等频率的脑电信号。所以SSVEP是周期性的信号,信号处理模型可用成整倍数关系的一系列正弦波组合来表示SSVEP。
基于 SSVEP 的 BCI 系统中视觉刺激频段的范围一直都是 BCI 研究中不断探索的问题,Christop S.Herrmann 等研究表明,刺激频率从 1Hz 到 100Hz 都能诱发 SSVEP响应。目前大部分 BCI 系统中采用的频率范围可分为低、中、高频段,其中低频段为6Hz-15Hz,中频段为 15Hz-30Hz,高频段为 30Hz-60Hz。不同刺激频段诱发的 SSVEP响应有所差异,由高频段刺激诱发的 SSVEP 响应峰值最小,而低频段诱发的 SSVEP响应具有信噪比高,容易诱发等优点,故目前很多研究中的视觉刺激频段都采用低频段。不过低频段视觉刺激也存在不足的地方,如容易使用户产生视觉疲劳。
二、数据的采集与算法处理思路
该数据基于SSVEP经典实验范式产生,所提供数据为4维数据,其中第一个维度表示数据采集的通道数,第二个维度表示数据采样点数,第三个维度表示实验次数,第四个维度表示试验中刺激块的闪烁频率。例如Data_1数据大小为[9,5120,40,6],9表示该实验数据的采集来自于9个通道,5120为采样点数,40表示为确保数据的可靠性,共进行了40轮,6表示SSVEP实验范式中刺激块的闪烁频率为6个不同的频率,采样频率为1024HZ。
在实际应用中所获得的原始信号总伴随着自发脑电等随机噪声,因此必须采取措施消除或者抑制这些噪声。而总体累加平均为一种传统的并且有效的方法。在总体累加平均时,应该对同一个通道(电极),同一个频率的40轮数据进行平均,可以通过两重循环和mean命令来实现。为了分析其频谱分量,将得到的数据进行FFT,便可以得到6个频率下,9个不同电极信号的频谱图,这样不但可以分辨不同的频率还可以找到效果更好的电极。
充分考虑到4Hz的眼电干扰,以及当前电脑屏幕的普遍刷新率为60HZ,所以将得到的信号再进行4Hz~60Hz的带通滤波。
并且通过MATLAB中的FDATOOL工具箱设计了通带截止频率为50HZ的低通滤波器,将所得信号进行滤波。经过MATLAB仿真分析,频率分别是7HZ,8HZ,9HZ,10HZ,11HZ,12HZ。
源代码以及滤波器的设计过程见后附。
三、数据处理结果
1. Data_1处理结果
Data_1数据并不是很理想。初步推测是信号采集或者被试等过程并不是很理想,或者刺激频率比较高,得到的信号信噪比过于小。所以采集到的信号也不是很理想,经过处理后并没有出现明显的峰值。这里仅仅展示两个不同个频率刺激下的效果图:
2. Data_2和Data_3处理结果
Data_2和Data_3的结果相同,下面仅仅展示Data_3的结果图。经过MATLAB仿真分析,6个不同的频率分别是7HZ,8HZ,9HZ,10HZ,11HZ,12HZ。(源代码间后附)
四、结论与总结
经过MATLAB仿真分析,发现SSVEP信号在频谱上由与视觉刺激频率成整数倍关系的频率成分组成,例如:一个7Hz的调制频率刺激眼球时,则会诱发7Hz、14Hz和21Hz等频率的脑电信号。
并且不同的电极通道的效果不同,经过本次仿真发现,效果最好的电极通道为t通道2通道5和通道7。效果不好的电极通道为通道1和通道6。
通过这次仿真,加深了对课堂上知识的理解,在实践当中提高了自己的动手能力。收获非凡。
五、源代码
% a:通道数 b:采样点数 c:确保数据的可靠性,共进行了c轮 d:表示SSVEP实验范式中刺激块的闪烁频率为6个不同的频率
% d是6个不同频率
%采样频率是1024HZ
clc,clear;
load G;
load SOS; %所设计的截止频率为4~50HZ的低通滤波器系数
Hd=dfilt.df2tsos(SOS,G);
% load Data_1;
% [a,b,c,d]=size(wangkaiData);
% load Data_2;
% [a,b,c,d]=size(kwang_1024_1);
load Data_3;
[a,b,c,d]=size(kwang_1024_2);
fs=1024;
N_fft=1024*16;
ff=linspace(-fs/2,fs/2,N_fft);
fork=1:d %d个不同的频率
figure,
forj=1:a %a个电极
fori=1:c %总共进行了c轮
z(i,:)=kwang_1024_2(j,:,i,k); %load不同的数据时,这里也需要更改!!!
end
y=mean(z);
y=filter(Hd,y);
%第k个频率的第j个通道的信号,通过c轮采样取平均,并且通过滤波(4~50HZ)。
Y=fft(y,N_fft); %进行1024*8点的FFT
subplot(3,3,j),plot(ff,fftshift(abs(Y))),axis([5 50 min(abs(Y))max(abs(Y))+500]);%频谱图
% subplot(3,3,j),plot(y),hold on; %%时域图
title(sprintf('通道%i \n',j));
end
end
滤波器设计参数: