脑电想象运动CSP特征提取与多类投票分类系统
项目介绍
本项目是一个基于MATLAB开发的脑机接口(BCI)信号处理演示系统。该系统专注于脑电图(EEG)想象运动信号的特征提取与分类,核心采用了共同空间模式(Common Spatial Patterns, CSP)算法。为了应对多类别采集需求,系统通过“一对多”(One-vs-Rest, OvR)策略扩展了传统的二分类CSP算法,并结合线性判别分析(LDA)分类器和概率投票机制,实现了对多类想象运动任务(如左手、右手、脚部运动想象)的高效识别。
功能特性
- 合成脑电数据生成:系统能够自动生成具有特定时频特性的多通道(22通道)模拟脑电信号,模拟不同意图下的事件相关去同步/同步(ERD/ERS)现象,并加入粉红噪声以模拟真实生理环境。
- 频率域预处理:内置四阶巴特沃斯带通滤波器,准确提取与想象运动紧密相关的Mu和Beta频段(8-30Hz)信号。
- 多类空间滤波策略:实现了改进的OvR-CSP算法,为每一个类别独立构建空间投影矩阵,旨在最大化当前类与其余所有类之间的方差差异。
- 特征提取与转换:通过空间滤波器对原始信号进行投影,计算投影信号的对数方差特征,有效降低特征维数并增强数据的正态分布特性。
- 智能集成投票分类:利用多组LDA分类器的后验概率输出进行软投票决策,自动判定最具可能性的运动意图类别。
- 稳健性验证机制:集成K折交叉验证(K-Fold Cross-Validation)流程,能够客观评估算法在未见数据上的泛化能力。
- 可视化评估分析:系统自动生成混淆矩阵热力图及分折准确率柱状图,直观展示分类性能及各类别间的误判情况。
实现逻辑
系统运行遵循标准的信号处理流水线:
- 初始化与参数定义:设定采样率(250Hz)、通道数(22)、类别数(3类)及CSP特征对数(每侧3对)。
- 数据制备:通过正弦信号堆叠与噪声注入,生成包含正向特征增强区和抑制区的模拟试次数据。
- 频域过滤:对全量试次进行带通滤波,消除无关的高频噪声和低频漂移。
- 交叉验证循环:
*
训练阶段:针对每一个类别,将当前类视为正样本,其他类视为负样本。调用核心函数计算该拓扑下的最优空间滤波器组,接着提取特征并训练二分类LDA模型。
*
测试阶段:将测试集通过所有已训练的滤波器组,并送入对应的LDA模型获取分类分值(概率)。
- 决策汇总:比较各模型输出的得分,选取最高得分对应的索引作为最终分类预测值。
- 性能统计:通过比对真实标签计算平均准确率,并构建混淆矩阵。
关键算法与函数分析
- 共同空间模式计算 (compute_csp):
*
协方差标准化:计算各类别数据的正规化空间协方差矩阵。
*
广义特征值求解:通过求解 $R_1 W = lambda(R_1 + R_2) W$ 寻找投影矩阵。
*
滤波器选择:排序特征值,选取能反映方差最大化和最小化的两端特征向量,组成最优空间映射矩阵,提取出最具区分性的空间分量。
- 特征提取 (extract_csp_features):
*
空间投影:将多导联信号投影到CSP空间。
*
对数方差计算:计算投影后各分量的方差,并进行对数变换。这一步是CSP的核心,它将信号的能量差异转化为分类器易于处理的线性特征。
- 分类与投票逻辑:
*
LDA模型训练:利用
fitcdiscr 建立线性分类平面。
*
概率投票:不直接输出类别标签,而是使用
predict 函数获取后验概率,确保了多模型决策时的连续性和科学性。
使用方法
- 确保计算机已安装 MATLAB 及其相关的信号处理工具箱、统计与机器学习工具箱。
- 将算法代码存放在 MATLAB 工作目录下。
- 在命令行窗口直接运行主程序脚本。
- 程序将依次在命令行打印“正在生成模拟数据”、“正在进行带通滤波”等进度信息。
- 运行结束后,系统会自动弹出可视化窗口,展示混淆矩阵及交叉验证准确率报告。
系统要求
- 软件版本:MATLAB R2016b 或更高版本。
- 必备工具箱:
* Signal Processing Toolbox(用于
butter 和
filter 函数)。
* Statistics and Machine Learning Toolbox(用于
crossvalind,
fitcdiscr,
predict,
confusionmat 等函数)。
- 硬件建议:标准台式机或笔记本电脑即可稳定运行,无特殊算力要求。