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?
Edge effects due to circular convolution can occur if you don't zero pad the data sufficiently before FFT/IFFT filtering. Fast convolution filtering using shorter sequential segments or windows from a longer data stream requires both padding of the FFT and overlap add/save processing of the overlapping IFFT results.
Just naively zeroing FFT bins instead of using the transform of a properly designed time domain filter can lead to extreme ripples in the filter's frequency response and/or ringing in the FFT/IFFT filtered result.
No phase distortion should occur if the filter kernel has appropriate symmetry in the time domain.
The computational cost of an FFT (in CPU cycles or latency time) can be higher than with IIR filtering. But that depends on the length of the data and the filter complexity (in filter order and/or number of passes).