• 大小: 1.73MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-11-09
  • 语言: Matlab
  • 标签: 小波变换  CSP  SVM  BCI  

资源简介

针对运动想象脑电信号,基于时频域和空间域分别采用小波变换法和共空间模式(CSP)提取特征向量,使用支持向量 机(SVM)对单一特征和融合特征进行识别并比较分类准确率

资源截图

代码片段和文件信息

function [CSP_Train_featureCSP_Test_feature] = CSP(x)
EEGSignals = x;   % 加载带通滤波后的脑电数据
%check and initializations
% EEGSignals.x_train=x;
EEG_Channels = size(EEGSignals.x_train2);
EEG_Trials = size(EEGSignals.x_train3);
classLabels = unique(EEGSignals.y_train);% Return non-repeating values
EEG_Classes = length(classLabels);
covMatrix = cell(EEG_Classes1); % 协方差矩阵
% Computing the normalized covariance matrices for each trial
trialCov = zeros(EEG_ChannelsEEG_ChannelsEEG_Trials);
for i = 1:EEG_Trials
    E = EEGSignals.x_train(::i)‘;
    EE = E*E‘;
    trialCov(::i) = EE./trace(EE);  % 计算协方差矩阵
end
clear E;
clear EE;
% 计算每一类样本数据的空间协方差之和
for i = 1:EEG_Classes
    covMatrix{i} = mean(trialCov(::EEGSignals.y_train == classLabels(i))3);
end
% 计算两类数据的空间协方差之和
covTotal = covMatrix{1} + covMatrix{2};
% 计算特征向量和特征矩阵
[UcDt] = eig(covTotal);
% 特征值要降序排列
eigenvalues = diag(Dt);
[eigenvaluesegIndex] = sort(eigenvalues ‘descend‘);% 降序
Ut = Uc(:egIndex);
% 矩阵白化
P = diag(sqrt(1./eigenvalues))*Ut‘;
% 矩阵P作用求公共特征向量transformedCov1 
transformedCov1 = P*covMatrix{1}*P‘;
%计算公共特征向量transformedCov1的特征向量和特征矩阵
[U1D1] = eig(transformedCov1);
eigenvalues = diag(D1);
[eigenvaluesegIndex] = sort(eigenvalues ‘descend‘);% 降序排列
U1 = U1(: egIndex);
% 计算投影矩阵W
CSPMatrix = U1‘ * P;
% 计算特征矩阵
FilterPairs = 2;       % CSP特征选择参数m    CSP特征为2*m个
features_train = zeros(EEG_Trials 2*FilterPairs+1);
features_test = zeros(EEG_Trials 2*FilterPairs+1);
Filter = CSPMatrix([1:FilterPairs (end-FilterPairs+1):end]:);
%extracting the CSP features from each trial
for t=1:EEG_Trials    
    %projecting the data onto the CSP filters    
    projectedTrial_train = Filter * EEGSignals.x_train(::t)‘;    
    projectedTrial_test = Filter * EEGSignals.x_test(::t)‘;
    %generating the features as the log variance of the projected signals
    variances_train = var(projectedTrial_train02);  
    variances_test = var(projectedTrial_test02);
    for f=1:length(variances_train)
        features_train(tf) = log(variances_train(f));
        % features_train(tf) = log(variances_train(f)/sum(variances_train));   %修改后对应公式
    end
    for f=1:length(variances_test)
        features_test(tf) = log(variances_test(f));
        %features_test(tf) = log(variances_test(f)/sum(variances_test));  % 修改后对应公式
    end
end
CSP_Train_feature = features_train(:1:4);
CSP_Test_feature = features_test(:1:4);
% save(‘CSP_feature.mat‘‘CSP_Train_feature‘‘CSP_Test_feature‘);

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2672  2020-06-07 20:39  基于运动想象脑电信号的多特征融合解码(Matlab实现代码)\CSP.m

     文件    7742184  2002-11-15 16:29  基于运动想象脑电信号的多特征融合解码(Matlab实现代码)\dataset_BCIcomp1.mat

     文件        336  2015-04-05 21:45  基于运动想象脑电信号的多特征融合解码(Matlab实现代码)\labels_data_set_iii.mat

     文件        801  2020-06-08 14:08  基于运动想象脑电信号的多特征融合解码(Matlab实现代码)\main.m

     文件       4740  2020-06-07 21:27  基于运动想象脑电信号的多特征融合解码(Matlab实现代码)\trainClassifier.m

     文件       4491  2020-06-07 21:24  基于运动想象脑电信号的多特征融合解码(Matlab实现代码)\trainClassifier1.m

     文件       4491  2020-06-07 21:37  基于运动想象脑电信号的多特征融合解码(Matlab实现代码)\trainClassifier2.m

     文件        765  2020-06-07 19:39  基于运动想象脑电信号的多特征融合解码(Matlab实现代码)\wavelet_energy_spectrum.m

     文件       1558  2020-06-07 19:36  基于运动想象脑电信号的多特征融合解码(Matlab实现代码)\wavelet_packetdecomposition_reconstruct.m

     文件       1326  2020-06-07 21:35  基于运动想象脑电信号的多特征融合解码(Matlab实现代码)\XB.m

     目录          0  2020-06-24 08:28  基于运动想象脑电信号的多特征融合解码(Matlab实现代码)

----------- ---------  ---------- -----  ----

              7763364                    11


评论

共有 条评论