P300腦機接口及數據集處理

P300是大腦認知過程中產生的一種事件相關電位,主要與期待、意動、覺醒、注意等心理因素有關。Sutton等人發現,當人腦受到小概率相關事件的刺激時,腦電信號中會出現一個潛伏期約爲300ms的正向波峯,P300因此得名。

P300腦機接口
在基於P300的oddball刺激範式 BCI 系統研究中,最經典的應用是Farwell和Donchin在 1988年提出並設計的字符拼寫器簡稱爲P300 Speller。如下圖所示,使用26個英文字母和 1-9個數字以及下劃線排列成 6 x 6 的虛擬鍵盤矩陣。隨機高亮字符矩陣的某一行或某一列,一次實驗中6 x 6列均被高亮亮一次,一共12次高亮刺激。受試者必須將注意力集中在矩陣中的字符上,以此來選擇組成單詞的每個字母。當包括此字符的行或者包含此字符的列被高亮時(也就是oddball範式中的靶刺激),要求受試者對此做出反應,予以計數,會產生P300波形;當不包含此字符的行或者列加亮時,被試不做出反應,不予計數,不會產生P300波形,通過解析腦電信號中的P300時序位置,並對照刺激序列的時序,進而確定刺激的行列位置,從而確定出受試者注視的字符,達到根據思維打字的目的。爲了有助於保持受試者的注意力,通常要求受試者對目標字符高亮的次數進行計數。值得注意的是重複高亮次數越多,識別準確率越好,但會增加拼寫時間。再者每一個字符也可以代表着一個控制指令,從而可以實現36個控制指令。

p300數據集
1、整個P300數據由基於Oddball範式的P300字符實驗產生,實驗過程如下:實驗過程由一名被試者完成,字符矩陣的顯示週期爲2.5s,在這個週期內,字符矩陣的每行或列均被隨機地加亮一次,加亮的持續時間爲lOOms,兩次加亮之間的時間間隔爲75ms:對於每個目標字符,受試者需連續重複進行15次實驗,即要經歷15個字符矩陣顯示週期,因此對於一個目標字符,字符矩陣會進行12×15次加亮。
第一節各段的目標字符分別爲CAT,DOG,FISH,WATER,BOWL;
第二節各段的目標字符分別爲HAT,HAT,GLOVE,SHOES,FISH,RAT;
第三節各段的目標字符爲FOOD,MOOT,HAM,PIE,CAKE,TUNA,ZYGOT,4567。
在實驗過程中,設備通過位於受試者腦部頭皮上的64個採樣電極,以240Hz的採樣頻率記錄腦電信號。並將記錄的信號分爲三節,每節信號又根據英文單詞或字符組的不同分成許多段。其中第一節(Session 10)包括5個段,第二節(Session 11)包括6個段,第三部分(Session 12)包括8個段。每段數據存儲爲一個Matlab數據格式文件,如第一節第四段的實驗數據存儲爲文件“AAS010R04”,第二節第六段的實驗數據存儲爲文件“AAS011R06”。
2、AAS011R06中有多個數組,數據集中的信號存放在signal的2維數組中,64個電極的採樣點
p300數據集
MATLAB處理數據集
1、代碼包含繪製cat的時域圖,字符的時域圖。
2、如cat,把64個電極採樣結果平均,再把字符c的15個週期取平均,就得到了字符c在一個字符矩陣顯示週期的時域圖了

load('AAS010R01.mat');
y=sum(signal,2)/64;
t=(0:length(y)-1)/240;
%-------------------------------------------%
figure(1)
plot(t(1:8776),y(1:8776),'g')
hold on
plot(t(8776:17752),y(8776:17752),'r')
hold on
plot(t(17753:26328),y(17753:26328),'b')
title('CAT')
axis([t(1) t(end)+10 -1.2*max(y) 1.2*max(y)]);
%------------------------------------------%
figure(2)
subplot(3,1,1)
y=y/10;
t=(0:length(y)-1)/240;
plot(t,y)
title('CAT:0-5秒')
wow=t(1200);
axis([0  wow -400 400]);
subplot(3,1,2)
plot(t,y)
title('CAT:35-40秒')
axis([35 40 -400 400]);
subplot(3,1,3)
plot(t,y)
title('CAT:70-75秒')
axis([70 75 -400 400]);
%------------------------------------------%
a=1:585;b=8777:9361;c=17553:18137;
z_1=y(a);z_2=y(b);z_3=y(c);
s_1=z_1;s_2=z_2;s_3=z_3;
for k=1:14
    a=a+585;b=b+585;c=c+585;
    z_1=y(a);z_2=y(b);z_3=y(c);
    s_1=s_1+z_1;s_2=s_2+z_2;s_3=s_3+z_3;
end
s_1=s_1/15;s_2=s_2/15;s_3=s_3/15;
v=(0:584)/240;
figure(3)
subplot(3,1,1)
plot(v,s_1)
title('15週期平均後字符c波形')
subplot(3,1,2)
plot(v,s_2)
title('15週期平均後字符a波形')
subplot(3,1,3)
plot(v,s_3)
title('15週期平均後字符t波形')

結果展示
一個段數據的實驗過程時域圖(26328/240=109.7秒)
26328個採樣點,240爲採樣頻率,一個字符的輸入時間大概爲36.56秒

把信號放大,取其中5秒來看(0-5,35-40,70-75秒)
可以明顯的觀察出突出的p300波形

將cat段每個字符的取15個週期的平均值

P300頻率
它是以delta(0.5-4hz)腦波爲主要貢獻和theta(4-7.5hz)腦波響應的融合
進一步分析,可以添加濾波部分,可以把上面生成波通過低通濾波器,在MATLAB中filter designer工具箱中生成阻帶12hz,通帶8hz的濾波器

Hd = lowfilter;
%引入濾波器,Hd包含了lowfilter濾波器的各項參數
d_1 = filter(Hd,s_1);
%通過filter函數將信號y送入參數爲Hd的濾波器,輸出信號d_1
d_2 = filter(Hd,s_2);
%通過filter函數將信號y送入參數爲Hd的濾波器,輸出信號d_2
d_3 = filter(Hd,s_3);
%通過filter函數將信號y送入參數爲Hd的濾波器,輸出信號d_3
figure(4)
subplot(3,1,1)
plot(v,d_1);%畫出通過濾波器的信號d_1的波形
title('通過濾波器後字符c波形')
subplot(3,1,2)
plot(v,d_2);%畫出通過濾波器的信號d_2的波形
title('通過濾波器後字符a波形')
subplot(3,1,3)
plot(v,d_3);%畫出通過濾波器的信號d_3的波形
title('通過濾波器後字符t波形')

效果展示

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章