I'm quite a novice in signal processing and I know this question may be too broad. But I would still like to hear hints from experts.
I was taught to use butter
(to design Butterworth filter aka the maximally flat magnitude filter) and filtfilt
(Zero-phase digital filtering) functions for bandpass filtering of EEG (electroencephalogram) signals in MATLAB offline (i.e. after the completion of recording). This way you can avoid inevitable "delay" caused by the digital filter (i.e. zero phase filtering).
Then, someone asked me why we cannot use fft
(Fast Fourier transform) to get the frequency-domain representation of the signal, and then set the power of unwanted frequencies to zero, followed by ifft
(Inverse fast Fourier transform) to recover the filtered data in the time domain for the same purpose. This manipulation in frequency domain sounded simpler and reasonable to me, and I couldn't really answer why.
What are the advantages and disadvantages of using the simple fft/ifft
method for bandpass filtering? Why do people prefer to use FIR or IIR digital filters?
For example, is the fft/ifft
method more prone to spectral leakage or ripples compared to the established digital filters? Does the method also suffer from phase delay? Is there a way to visualize the impulse response for this filtering method for comparison?