Skip to content

Instantly share code, notes, and snippets.

@iandol
Last active April 26, 2020 03:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save iandol/118a3aeb6820ab8d7edd48fe2791774e to your computer and use it in GitHub Desktop.
Save iandol/118a3aeb6820ab8d7edd48fe2791774e to your computer and use it in GitHub Desktop.
Load EDF data with 8 trigger channels
ft_defaults;
fileName = 'Test_4.edf';
bitchannels = 3:10;
cfg = [];
cfg.dataset = fileName;
cfg.header = ft_read_header(cfg.dataset);
labels = cfg.header.label(3:end);
data_events = ft_read_event(cfg.dataset,'header',cfg.header,...
'detectflank','up','chanindx',bitchannels,'threshold','5*nanmedian');
events = [];
if ~exist('data_eeg','var')
cfg.continuous = 'yes';
cfg.channel = 'all';
data_eeg = ft_preprocessing(cfg);
end
for i = 1:length(labels)
idx = cellfun(@(x)strcmpi(x,labels{i}),{data_events.type});
events(i).label = labels{i};
events(i).idx = find(idx==1);
events(i).evnt = data_events(events(i).idx);
events(i).samples = [events(i).evnt.sample];
events(i).times = data_eeg.time{1}(events(i).samples);
end
nchan = length(data_eeg.label);
offset = 0;
h = figure('Name',fileName,'Units','normalized','Position',[0.1 0.1 0.8 0.8]);
tl = tiledlayout(h,nchan,1,'TileSpacing','compact','Padding','none');
tm = data_eeg.time{1};
for i = 1:nchan
ch{i} = data_eeg.trial{1}(i+offset,:);
baseline = median(ch{i}(1:100));
ch{i} = (ch{i} - baseline);
ch{i} = ch{i} / max(ch{i});
nexttile(tl,i)
plot(tm,ch{i},'k-'); hold on
if i < 3
for ii = 1:length(events)
y = repmat(ii/10, [1 length(events(ii).times)]);
plot(events(ii).times,y,'.','MarkerSize',12);
end
else
ii = i - 2;
y = repmat(ii/10, [1 length(events(ii).times)]);
if ~isempty(9);plot(events(ii).times,y,'r.','MarkerSize',12);end
end
title(data_eeg.label{i});
set(gca,'ButtonDownFcn',@myCallback);
end
tl.XLabel.String = 'Time (s)';
tl.YLabel.String = 'Normalised Amplitude';
xl = [10 20];
for i=1:nchan
nexttile(tl,i);
xlim(xl);
ylim([-0.05 1.05]);
end
function myCallback(src,~)
xl = src.XLim;
for i = 1:length(src.Parent.Children)
src.Parent.Children(i).YLim = [-0.05 1.05];
if ~all(xl == src.Parent.Children(i).XLim)
src.Parent.Children(i).XLim = xl;
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment