I recently started working on sleep study.

For my research I download sleep EEG data from physionet. The EEG data has 100 Hz sampling rate and was recorded from 2 bipolar EEG site.

When I start the preprocessing stage, I encounter a simple problem:

How would I know if my signal has an artifact or noise?

It should be noted, based on Nyquist theorem and my signal's sampling rate, the maximum frequency of my signal is 50 Hz, so I did not filter unnecessary EEG frequency.

In general I only used a simple notch filter at 50 Hz, and used simple threshold method in order to remove the epochs that were grossly contaminated by muscle and/or eye movement artifacts.

Back to the main question, how should I know if I need to uses more complicated method for removing EMG or EOG artifact from my signal?

  • 2
    $\begingroup$ That depends on what you do with your signal. No general statement can be given! $\endgroup$ Dec 2, 2017 at 11:32
  • $\begingroup$ There are great tutorials for EEG signal processing. Just have a look at fieldtrip or eeglab which are matlab tools to process electro-physiological recordings. $\endgroup$ Dec 4, 2017 at 14:00

2 Answers 2


It primarily relies on,

  • what are you looking for in the EEG: define the frequency band that relates with the phenomena you are interested to investigate and filter out the rest (e.g. for sleep events bandpass ~= 0.8-30Hz).
  • power line of your area: notch filter at 50Hz or 60Hz.
  • Study design: if you are investigating events ensemble averages will remove random noise processes and highlight potential EEG events of interest.

Moreover, you can apply baseline removal to de-noise your signal from saturation trends and other systemical artefacts. Other experimental methods include ICA, which you will not be able to apply robustly since you only have two channels.


IMO, if you could collect data from multiple channels, you can estimate the true signal by just taking the mean (i.e. ML estimation) given that your noise is Gaussian white (Have gaussian distribution at every given sample and uncorrelated for each samples.) That "mean" should be able to give you the estimate of the real signal and you may be extract the noise from each signal obtained from different channels. Another problem is, you say you are not sampling inputs over 50Hz but actually you do. You just add them over your original bandwidth (i.e. alliasing). So you are not "cutting" signals with frequencies over 50Hz. Maybe you can consider a LP filter with a higher cutoff and you can measure the energy of the signal with frequencies over 50Hz. That should give you a better insight on the desired cutoff of your filter.

  • $\begingroup$ thanks for your answer, I don't know if I get your answer right or not. for being more clear I should add that, I did not cut frequency higher than 50. the recorded signals sampling rate was 100 Hz, so I assumed base on Nyquist theorem the highest frequency in undigitized signal, (the highest frequency with considerable energy) was 50 or else the person in charge of recording the dataset, select the fs wrongly. $\endgroup$
    – maia
    Apr 30, 2019 at 12:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.