--- a +++ b/preprocessing/BCIIV2b.m @@ -0,0 +1,67 @@ +% An example to get the BCI competition IV datasets 2b, only for reference +% Data from: http://www.bbci.de/competition/iv/ +% using open-source toolbox Biosig on MATLAB: http://biosig.sourceforge.net/ +% Just an example, you should change as you need. + +% get processed T data +function data = process(subject_index) + +%% BioSig Get the data +% T data +% subject_index = 1; %1-9 +session_type = 'E'; +dir = ['D:\MI\BCICIV_2b_gdf\B0',num2str(subject_index),'05',session_type,'.gdf']; +[s, HDR] = sload(dir); + +% Label +% label = HDR.Classlabel; +labeldir = ['D:\MI\2b_true_labels\B0',num2str(subject_index),'05',session_type,'.mat']; +load(labeldir); +label = classlabel; + +% construct sample - data Section 1000*22*288 +Pos = HDR.EVENT.POS; +% Dur = HDR.EVENT.DUR; +Typ = HDR.EVENT.TYP; + +k = 0; +data_1 = zeros(1000,3,120); +for j = 1:length(Typ) + if Typ(j) == 768 + k = k+1; + data_1(:,:,k) = s((Pos(j)+750):(Pos(j)+1749),1:3); + end +end + +% wipe off NaN +data_1(isnan(data_1)) = 0; + +data = data_1; +pindex = randperm(120); +data = data(:, :, pindex); +label = label(pindex); + +% 4-40 Hz +fc = 250; +fb_data = zeros(1000,3,120); + +Wl = 4; Wh = 40; % ͨΧ +Wn = [Wl*2 Wh*2]/fc; +[b,a]=cheby2(6,60,Wn); +for j = 1:120 + fb_data(:,:,j) = filtfilt(b,a,data(:,:,j)); +end + + +% eeg_mean = mean(fb_data,3); +% eeg_std = std(fb_data,1,3); +% fb_data = (fb_data-eeg_mean)./eeg_std; + +data = fb_data; + +saveDir = ['D:\MI\standard_2b_data\strict_TE\B0',num2str(subject_index),'05E.mat']; +save(saveDir,'data','label'); + +end + +