资源简介

很不错的matlab代码,针对于做EEG的运动想象的CSP分解算法和特征选取,代码注释很清楚,拿到手就可以用,结合数据集。

资源截图

代码片段和文件信息

function features = extractCSPFeatures(EEGSignals CSPMatrix nbFilterPairs)

%extract features from an EEG data set using the Common Spatial Patterns (CSP) algorithm
%
%Input:
%EEGSignals: the EEGSignals from which extracting the CSP features. These signals
%are a structure such that:
%   EEGSignals.x: the EEG signals as a [Ns * Nc * Nt] Matrix where
%       Ns: number of EEG samples per trial
%       Nc: number of channels (EEG electrodes)
%       nT: number of trials
%   EEGSignals.y: a [1 * Nt] vector containing the class labels for each trial
%   EEGSignals.s: the sampling frequency (in Hz)
%CSPMatrix: the CSP projection matrix learnt previously (see function learnCSP)
%nbFilterPairs: number of pairs of CSP filters to be used. The number of
%   features extracted will be twice the value of this parameter. The
%   filters selected are the one corresponding to the lowest and highest
%   eigenvalues
%
%Output:
%features: the features extracted from this EEG data set 
%   as a [Nt * (nbFilterPairs*2 + 1)] matrix with the class labels as the
%   last column   

%initializations
nbTrials = size(EEGSignals.x3);
features = zeros(nbTrials 2*nbFilterPairs+1);
Filter = CSPMatrix([1:nbFilterPairs (end-nbFilterPairs+1):end]:);

%extracting the CSP features from each trial
for t=1:nbTrials    
    %projecting the data onto the CSP filters    
    projectedTrial = Filter * EEGSignals.x(::t)‘;    
    
    %generating the features as the log variance of the projected signals
    variances = var(projectedTrial02);    
    for f=1:length(variances)
        features(tf) = log(variances(f));
    end
    features(tend) = EEGSignals.y(t);    
end

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

     文件       1708  2018-04-04 16:03  extractCSPFeatures.m

     文件       2015  2018-03-29 10:30  learnCSP.m

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

                 3723                    2


评论

共有 条评论