How to filter an EEG signal from eye blinking, electrodes movement and calculate the evoked potential?
27 views (last 30 days)
Show older comments
Hi this is my code: can you help me, because the filtering does not work
load 'eeg4.mat'
sig = eeg;
fs = 256;
t=linspace(0,length(sig)/fs,length(sig));
figure()
plot(t,sig/max(sig));
grid
title('Signal in Time Domain');
xlabel('Time(s)');
ylabel('Amplitude');
figure()
sig=sig-mean(sig); % Per visualizzare meglio lo spettro
f=linspace(-fs/2,fs/2,length(sig));
plot(f,fftshift(abs(fft(sig))));
title('Signal in Frequency Domain');
xlabel('Frequency (Hz)');
ylabel('Amplitude');
%remove eye blinking
eyes = smooth(sig, 20); % artefacts 20Hz
sig = sig - eyes; % noise
%Filtering
[b,a]=butter(4,[41,43]/(fs/2),'stop');
sig_f=filtfilt(b,a,sig);
figure()
plot(f,fftshift(abs(fft(sig_f))));
title('Signal Filtered in Frequency Domain');
xlabel('Frequency (Hz)');
ylabel('Amplitude');
[h,i]=butter(1,0.05/(fs/2),'high');
eeg=filtfilt(h,i,sig);
figure()
plot(f,fftshift(abs(fft(eeg))));
title('EEG Filtered in Frequency Domain');
xlabel('Frequency (Hz)');
ylabel('Amplitude');
figure()
plot(t,eeg/max(eeg))
title('EEG Filtered in Time Domain')
% evoked potential????
load 'Evoked Potential3.mat'
[seg,corr_avg] = correllated_average_1(e_p,trigger,ie_p);
0 Comments
Answers (1)
Star Strider
on 17 Jun 2023
The EEG signal does not need filtering. It is not significantly noisy, and it is obvious that a 50 Hz mains interference peak has already been filtered out. This is a normal signal and spectrum for a single-channel EEG.
It is not obvious what you want to do with the 'EvokedPotential3.mat' file, since it appears to have nothing in common with the 'eeg4.mat' file.
LD1 = load('eeg4.mat');
EEG = LD1.eeg;
L1 = numel(EEG);
LD2 = load('EvokedPotential3.mat');
e_p = LD2.e_p;
ie_p = LD2.ie_p;
trigger = LD2.trigger;
Fs = 256;
t1 = linspace(0, L1-1, L1)/Fs;
figure
plot(t1, EEG)
grid
xlabel('Time')
ylabel('Amplitude')
title('EEG')
figure
plot(t1, EEG)
grid
xlabel('Time')
ylabel('Amplitude')
title('EEG (Detail)')
xlim([0 1])
Fn = Fs/2;
NFFT = 2^nextpow2(L1)
FTEEG = fft((EEG-mean(EEG)).*hann(L1), NFFT)/L1;
Fv = linspace(0, 1, NFFT/2+1)*Fn;
Iv = 1:numel(Fv);
figure
plot(Fv, abs(FTEEG(Iv))*2)
grid
xlabel('Frequency')
ylabel('Magnitude')
title('EEG Spectrum')
.
0 Comments
See Also
Categories
Find more on EEG/MEG/ECoG in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!