Home > vbmeg > demo > tutorial_for_vbmeg2 > easy_VBMEG > regress_out_eog_from_eeg.m

regress_out_eog_from_eeg

PURPOSE ^

Regress out EOG components from EEG data

SYNOPSIS ^

function regress_out_eog_from_eeg(p)

DESCRIPTION ^

 Regress out EOG components from EEG data

 Copyright (C) 2011, ATR All Rights Reserved.
 License : New BSD License(see VBMEG_LICENSE.txt)

CROSS-REFERENCE INFORMATION ^

This function calls: This function is called by:

SOURCE CODE ^

0001 function regress_out_eog_from_eeg(p)
0002 % Regress out EOG components from EEG data
0003 %
0004 % Copyright (C) 2011, ATR All Rights Reserved.
0005 % License : New BSD License(see VBMEG_LICENSE.txt)
0006 
0007 disp(mfilename);
0008 
0009 % Set parameters
0010 Nfile = length(p.file_list);
0011 prefix = 'r_';
0012 load_spec.ChannelName = {'EOG1', 'EOG2'};
0013 ch_eeg = 1:63;
0014 
0015 % Load all of the EOG and EEG data
0016 eog_all = [];
0017 eeg_all = [];
0018 for file=1:Nfile
0019     % Load EOG data
0020     trial_file = fullfile(p.proj_root, p.eeg_dirname, p.trial_dirname, [p.file_list{file} '.eeg.mat']);
0021     eog = vb_load_meg_data(trial_file, load_spec);
0022     for tr = 1:size(eog, 3)
0023         eog_all = [eog_all, eog(:,:,tr)];
0024     end
0025     
0026     % Load EEG data
0027     load(trial_file, 'eeg_data')
0028     for tr = 1:size(eeg_data, 3)
0029         eeg_all = [eeg_all, eeg_data(ch_eeg,:,tr)];
0030     end
0031 end
0032 
0033 % Calculate weight, where EEG = weight x EOG
0034 w = zeros(length(ch_eeg), size(eog_all, 1)+1);
0035 for ch = ch_eeg
0036     w(ch, :) = vb_multiple_regression(eog_all, eeg_all(ch, :));
0037 end
0038 
0039 % Remove EOG components from EEG data
0040 for file = 1:Nfile
0041     % Load EOG data
0042     trial_file = fullfile(p.proj_root, p.eeg_dirname, p.trial_dirname, [p.file_list{file} '.eeg.mat']);
0043     eog = vb_load_meg_data(trial_file, load_spec);
0044     
0045     % Remove EOG components from EEG data
0046     load(trial_file, 'eeg_data')
0047     for tr = 1:size(eeg_data,3)
0048         for ch = ch_eeg
0049             peeg = vb_pre_multiple_regression(eog(:, :, tr), w(ch, :));
0050             eeg_data(ch, :, tr) = eeg_data(ch, :, tr)-peeg;
0051         end
0052     end
0053     
0054     % Save EOG-free EEG data
0055     new_trial_file = fullfile(p.proj_root, p.eeg_dirname, p.trial_dirname, [prefix p.file_list{file} '.eeg.mat']);
0056     copyfile(trial_file, new_trial_file);
0057     vb_save(new_trial_file, 'eeg_data');
0058 end
0059

Generated on Mon 22-May-2023 06:53:56 by m2html © 2005