Professional Documents
Culture Documents
征,不同的特征需要采取不同的特征提取方法,如空域特
征一般采用空域滤波器(共同空间模式,CSP)进行提取,频域
特 征 一 般 采 用 傅 立 叶 变 换 、 小 波 变 换 或 自 回 归 (Auto-
Regressive, AR)模型获取。
共空间模式(CSP): 一种对两分类任务下的空域滤波特
征提取算法,能够从多通道的脑机接口数据里面提取出每
一类的空间分布成分。
共空间模式算法的基本原理: 利用矩阵的对角化,找到一
组最优空间滤波器进行投影,使得两类信号的方差值差异
最大化,从而得到具有较高区分度的特征向量。
共空间模式算法旨在: 设计空间滤波器使得两组脑电时空
信号矩阵滤波后,方差值差异最大化,从而得到具有较高
区分度的特征向量。用于下一步将特征向量送入分类器进
行分类。
%Input:
These signals
where
each trial
% EEGSignals.s: the sampling frequency (in Hz)
%Output:
filters as rows)
nbChannels = size(EEGSignals.x,2); % 通道
nbClasses = length(classLabels); % 类别
if nbClasses ~= 2
return;
end
each class
trial
%% 为每个试验计算标准化的协方差矩阵。
trialCov = zeros(nbChannels,nbChannels,nbTrials);
for t=1:nbTrials
E = EEGSignals.x(:,:,t)'; %note the transpose
EE = E * E';
trialCov(:,:,t) = EE ./ trace(EE);
end
clear E;
clear EE;
for c=1:nbClasses
covMatrices{c} = mean(trialCov(:,:,EEGSignals.y ==
classLabels(c)),3);
end
特征值最初是递增的
eigenvalues = diag(Dt);
Ut = Ut(:,egIndex);
P = diag(sqrt(1./eigenvalues)) * Ut';
%transforming covariance matrix of first class using P
%用 P 变换第一类协方差矩阵
EVD
eigenvalues = diag(D1);
U1 = U1(:, egIndex);
CSPMatrix = U1' * P;
%Input:
where
each trial
function learnCSP)
number of
The
highest
% eigenvalues
%Output:
as the
% last column
%initializations
nbTrials = size(EEGSignals.x,3);
for t=1:nbTrials
projectedsignals
variances = var(projectedTrial,0,2);
for f=1:length(variances)
features(t,f) = log(1+variances(f));
end
end
load dataset_BCIcomp1.mat
EEGSignals.x=x_train;
EEGSignals.y=y_train;
Y=y_train;
classLabels = unique(EEGSignals.y);
CSPMatrix = learnCSP(EEGSignals,classLabels);
nbFilterPairs = 1;
save dataCSP.mat X Y T
color_L = [0 102 255] ./ 255;
color_R = [255, 0, 102] ./ 255;
pos = find(Y==1);
plot(X(pos,1),X(pos,2),'x','Color',color_L,'LineWidth',2);
hold on
pos = find(Y==2);
plot(X(pos,1),X(pos,2),'o','Color',color_R,'LineWidth',2);
%%主函数(main):
clc;clear;
%% 读取数据并对数据预处理
Subjects = 9; %被试数
Fs = 250; %采样率
windowLength = 4; %单次采样时间
chanSelect = [8,10,12]; %通道选择 c3,c4,cz
totalFlt = [4 40]; %总的滤波频段选择
load rawdata1.mat
[Data_train,label_train] =
preProccess(Fs,windowLength,EEG,chanSelect,totalFlt);
%preProccess 执行数据提取、分段、滤波处理
load rawdata2.mat
[Data_test,label_test] =
preProccess(Fs,windowLength,EEG,chanSelect,totalFlt);
%% CSP 特征提取
EEGSignals.x = Data_train;
EEGSignals.y = label_train;
Y = label_train;
classLabels = unique(EEGSignals.y);
CSPMatrix = learnCSP(EEGSignals,classLabels);
nbFilterPairs = 1;
X = extractCSP(EEGSignals, CSPMatrix, nbFilterPairs);
EEGSignals_test.x=Data_test;
EEGSignals_test.y=label_test;
T = extractCSP(EEGSignals_test, CSPMatrix, nbFilterPairs);
save dataCSP.mat X Y T
pos = find(Y==1);
plot(X(pos,1),X(pos,2),'x','Color',color_L,'LineWidth',2);
hold on
pos = find(Y==2);
plot(X(pos,1),X(pos,2),'o','Color',color_R,'LineWidth',2);
if nbClasses ~= 2
disp('ERROR! CSP can only be used for two classes');
return;
end
绘制 2D 图
此时图像
重参考(平均参考)
滤波(0.5-45)
此时图像
跑 ica
去眼电
此时图像
分段 2 8 分段
叠加平均看 PZ,在 300 处
时频分析 看通道 17 的
横轴时间 纵轴频率
绘制 ERP 图像
脑电数据 2 预处理分析
加载数据
调整通道数为 16 -----------------------------------------
\\
绘制脑电头皮图可视化通道位置(显示通道名 显示通道号)
绘制通道光谱图(采样 15%和 100%的效果图)
绘制所选通道的头皮位置(通道 1)
\\
滤波(下边缘频率 10hz,上边缘频率 50hz)
重新参考数据操作(平均参考)
选用平均参考
重参考及滤波后的图
提取数据 epoch
提取数据 epoch 移除基线值
在头皮图单轴绘制 ERP 数据
输入所需的延迟 0:100:500
\\
在 ERP 中按 Phase Value 对 Trials 进行排序
eeglab 默认按照 trial 在实验过程中出现的顺序排列。在 pop_erpimage.m 界面上,清除
Epoch-sorting field、Event type、Align 和 Event time range。在 Sort trials by phase section 中
Frequency 中输入 10(Hz),在 Window Center 输入 0
在 ERP 中按 Phase Value 对 Trials 进行排序
输入如下参数
上图的最上方子图的 ERP image。倒数第二个子图是 ERSP(Event Related Spectral Power),
表示的是功率的平均变化(单位为 dB)。在这个子图中,曲线没有超出蓝色区域,表示在
选择的频率 10.13Hz(见右下角)相对基线水平(25.93dB),功率没有显著变化。最下方
的子图的 ITC。它表示的相对刺激呈现而言,相位同步化的程度。10.13Hz 表示选择分析的
频段。可以看出在 300Hz 附近相位同步化显著增强
绘制 Component headplots(1:12)
学习和删除 ICA 组件
估计独立成分的贡献,假设考察 27 号
绘制独立成分 ERPs
\\
绘制独立成分 ERP 贡献
数据 3 预处理
加载数据
电极定位
重参考(双侧乳突)FCZ 作为参考
滤波(0.1-30)
插值坏导(FP1)
没降采样率
跑 ICA 后(去毛刺)
去伪迹(手动)
数据 3 数据分析
创建事件清单
Assign.bin
ERP 分段(-200 800)与基线校正
ERPLAB 去伪迹
计算平均波幅
计算峰值