共空间模式 CSP 和滤波器组共空间模式 FBCSP 的 MATLAB 实现

本文介绍了如何在MATLAB中实现共空间模式(CSP)和滤波器组共空间模式(FBCSP)的函数,包括cspfunc、cspfilt、fbcspfunc和fbcspfilt。cspfunc用于提取CSP特征并获取滤波器,cspfilt用于滤波,fbcspfunc扩展为分频段的CSP处理,fbcspfilt使用fbcsp滤波器进行滤波。使用这些函数时,需先用func计算滤波器参数,再进行filt操作。
摘要由CSDN通过智能技术生成

参考的博客:点击此处链接跳转
在这里插入图片描述
在博主的基础之上,修改为函数,并且增加了 FBCSP 的函数

共有四个函数
cspfunc:针对两类脑电和标签提取csp特征并获取滤波器
cspfilt:使用获取的csp滤波器滤波

fbcspfunc:针对两类脑电和标签提取fbcsp特征并获取滤波器(fbcsp 就是分频段组合的 csp,可以是csps?)
fbcspfilt:使用获取的fbcsp滤波器滤波

需要注意的是,必须先进行 func 计算获取滤波器参数,才能进行 filt

cspfunc 函数(主要的函数,借鉴上边博主的demo,大家如果觉得这篇有用也请一定去支持一下他):

function [cspfeature cspw] = cspfunc(eeg,label,m)
% eeg:分段后的三维脑电(已滤波),采样点 * 通道 * 实验次数
% label:脑电的标签,列向量,值只有 12
% m:csp 参数

% cspfeature:提取到的fbcsp 特征,主要用于训练,如果是测试,需要用 fbcspfilt 函数滤波
% cspw:fbcsp 滤波器

%check and initializations
EEG_Channels = size(eeg,2); % 通道数目
EEG_Trials = size(eeg,3); % 实验次数
classLabels = unique(label);% Return non-repeating values
EEG_Classes = length(classLabels); % 标签类个数

covMatrix = cell(EEG_Classes,1); % 协方差矩阵
% Computing the normalized covariance matrices for each trial
trialCov = zeros(EEG_Channels,EEG_Channels,EEG_Trials);
for i = 1:EEG_Trials
    E = eeg(:,:,i)';
    EE = E*E';
    trialCov(:,:,i) = EE./trace(EE);  % 计算协方差矩阵
end
clear E;
clear EE;
% 计算每一类样本数据的空间协方差之和
for i = 1:EEG_Classes
    covMatrix{
   i} = mean(trialCov(:,:,label == classLabels(i)),3);
end
% 计算两类数据的空间协方差之和
covTotal = covMatrix{
   1} + covMatrix{
   2};
% 计算特征向量和特征矩阵
[Uc,Dt] = eig(covTotal);
% 特征值要降序排列
eigenvalues = diag(Dt);
[eigenvalues,egIndex] = sort(eigenvalues, 'descend')
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

油泼西红柿

Wish U Thrive

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值