文章目录
- 前言
- 一、eeglab插件-脑电信号的可视化显示
- 二、信号输入
- 1.信号处理
- 2.eeglab可视化显示
- 三、特征提取
- 总结
前言
基于PCA,ICA,CSP等相关算法,以及FIR、IIR等相关滤波的学习,开始下一阶段,脑机接口的实战化训练与学习。本篇为实际案例分享,脑电信号的分类,原始博客详见运动想象丨特征提取 MATLAB例程(一)
本文代码见网盘提取muda
一、eeglab插件-脑电信号的可视化显示
eeglab是一个交互式的matlab工具箱,用于处理连续的和与事件相关的eeg、meg和其他电生理数据,包括独立成分分析(ica)、时间/频率分析、伪影抑制、事件相关统计以及对平均和单次试验数据的几种有用的可视化模式。
eeglab在MATLAB中安装教程
二、信号输入
1.信号处理
由于给定原始数据的通道和采样点的顺序反了,因此需要对数据做一个置换操作,才能在eeglab中有效输出。(将1152x3x140的数据转换为3x1152x140)
- 代码如下
load dataset_BCIcomp1.mat% x_train,x_test数据(三维)中前两维数据做置换,即通道和采样点信息
x1 = x_train;
x2 = x_test;for i=1:1152for j=1:3for k=1:140A(j,i,k) = x1(i, j ,k);B(j,i,k) = x2(i, j ,k);endend
endsave x_train.mat A
save x_test.mat B
2.eeglab可视化显示
- matlab 命令窗口输入eeglab命令,弹出eeglab显示窗口,如下:
2.执行如下操作:
3.继续执行如下操作:Browse选择x_train.mat
4.一直OK,知道出现下图:
5.plot绘图,选channel data,效果如下:
三、特征提取
- 源码如下:
% Extract Common Spatial Pattern (CSP) Feature
close all; clear; clc;load dataset_BCIcomp1.matEEGSignals.x=x_train;
EEGSignals.y=y_train;
Y=y_train;classLabels = unique(EEGSignals.y);
CSPMatrix = learnCSP(EEGSignals,classLabels);
nbFilterPairs = 1;X = extractCSP(EEGSignals, CSPMatrix, nbFilterPairs);
EEGSignals.x=x_test;
T = extractCSP(EEGSignals, CSPMatrix, nbFilterPairs);
save dataCSP.mat X Y Tcolor_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);legend('Left Hand','Right Hand')
xlabel('C3','fontweight','bold')
ylabel('C4','fontweight','bold')
- 结果展示
总结
可以使用不同的方法进行特征提取,例如自回归(AR),共空间模式(CSP),离散小波变换(DWT)和功率谱密度(PSD)等,源码见网盘提取muda。