Personal tools
You are here: Home ERPlab ERPLAB Documentation and Utilities Utilities (alpha version) Deleting short segments of continuos EEG

Deleting short segments of continuos EEG

delshortseg.m deletes segment of data between 2 event codes (string or number) if the size of the segment is lesser than a specified time in msec. For instance, after performing (automatic) artifact detection/rejection in continuous data, and inserting new 'boundary' codes, is probable that some EEG segments (between boundaries) got too short to be analyzed with ICA, or processed with some type of filters, etc. So, delshortseg.m will help with this.

delshortseg.m — Objective-C source code, 3Kb

File contents

% delshortseg.m (alpha version)
%
% Deletes segment of data between 2 event codes (string or number) if the size of the segment
% is lesser than a specified time (in msec)
% 
% USAGE
%
% EEG = delshortseg(EEG, code, mindistance);
%
% Input:
%
% EEG         - continuous EEG dataset (EEGLAB's EEG structure)
% code        - event code. You may use string or numeric event codes depending on the format of EEG.event.type
% mindistance - time threshold, in msec, for short segment(s) to be deleted.
%
% Output:
%
% EEG         - continuous EEG dataset  (EEGLAB's EEG structure)
% 
%
% Example
%  Delete segment of data between 2 'boundary' event codes when it is shorter than 3000 ms (3 secs).
% 
%  >> EEG = delshortseg(EEG, 'boundary', 3000);
% 
%  
% Author: Javier Lopez-Calderon
% Center for Mind and Brain
% University of California, Davis,
% Davis, CA
% 2009

%b8d3721ed219e65100184c6b95db209bb8d3721ed219e65100184c6b95db209b
%
% ERPLAB Toolbox
% Copyright (c) 2007 The Regents of the University of California
% Created by Javier Lopez-Calderon and Steven Luck
% Center for Mind and Brain, University of California, Davis,
% javlopez@ucdavis.edu, sjluck@ucdavis.edu
%
% This program is free software: you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation, either version 3 of the License, or
% (at your option) any later version.
%
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this program.  If not, see <http://www.gnu.org/licenses/>.

function EEG = delshortseg(EEG, code, mindistance)

if nargin<1
        help delshortseg
        return
end
if nargin<3
        error('ERPLAB says: delshortseg.m needs 3 inputs.')
end
disp('Working...')
mindistancesamp = round(mindistance*EEG.srate/1000);  %ms to samples
if ischar(EEG.event(1).type) && ischar(code)
        latx  = strmatch(code, {EEG.event.type}, 'exact');
elseif ~ischar(EEG.event(1).type) && isnumeric(code)
        latx = find([EEG.event.type]==code);
else
        error('ERPLAB says: Your specified code must have the same format as your event codes (string or numeric).')
end

sampx = round([EEG.event(latx).latency]); % samples

if sampx(end)~=EEG.pnts
        sampx(end+1) = EEG.pnts; % add the last sample
end
a=1;
windx = [];
k=1;
% look for short segments
for i=1:length(sampx)
        if abs(sampx(i)-a)<=mindistancesamp
                t1 = a;
                t2 = sampx(i);
                windx(k,:) = [t1 t2];
                k=k+1;
        end
        a = sampx(i);
end

if k==1
        fprintf('\nNote: No short segment was found.\n')
else
        EEG = eeg_eegrej( EEG, windx);        
end
% get rid of the first boundary when is on the first sample.
if ischar(EEG.event(1).type)
        if strcmpi(code, EEG.event(1).type) && EEG.event(1).latency<=1 % in sample
                EEG = pop_editeventvals(EEG,'delete',1);
        end
else
        if code==EEG.event(1).type && EEG.event(1).latency<=1 % in sample
                EEG = pop_editeventvals(EEG,'delete',1);
        end
end
disp('Complete')










Document Actions
« June 2013 »
June
MoTuWeThFrSaSu
12
3456789
10111213141516
17181920212223
24252627282930