simple fft filtering vs e.g. butterworth filtering

22 views (last 30 days)
I am currently working on functional connectivity analysis of EEG, and need to bandpass filter my data into different frequency bands (Delta, Theta, Alpha and Beta). An important thing is that the filter doesn't cause phase distortion. I know a butterworth filter and processing the data in both the forward and reverse directions (e.g. with filtfilt in Matlab) is a good approach, however I was still wondering about the simple FFT/IFFT filtering approach. What are the exact disadvantages of this method? Does this method cause phase distortions? What are 'edge effects' that occur with this method?

Answers (1)

Star Strider
Star Strider on 20 May 2014
Filters with sharp cutoffs (for instance using the FFT/IFFT approach) can create undesirable ringing ( Gibbs phenomenon ). This is especially problematic for EEG and other low-frequency signals. (The method used by fftfilt has the disadvantage of being slow for long data sequences. I’ve not used it, so I can’t comment on it.)
I suggest the Butterworth for an initial approach, using the tf2sos transformation to avoid filter instability for narrow passbands. Butterworth filters have the advantage of more gradual cutoffs, therefore lower distortion, especially with filtfilt. If it gives good results in your application, stop there. If it doesn’t, you might want to experiment with filters with sharper cutoffs. I suggest first the Chebyshev, and that still doesn’t give you the result you want, then elliptic implementations. They have their own optimal implementation characteristics, well described in the MATLAB documentation. Use the freqz function to analyse your filter designs. It’s quite useful.
You will have to adjust the passbands with a low frequency cutoff high enough to eliminate baseline drift and low enough to not eliminate valid low-frequency EEG data. Notably, absence episodes are characterised by 3 Hz spike-and-wave complexes, so the low frequency cutoffs have to be able to include such information if you’re studying them.

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!