# Why does an FFT-based filter change phase?

I am very new to DSP, and I'm just trying to figure stuff out here. I saw a video which stated that a filter implemented using an FFT would alter the phase of different frequencies differently. The way I'd assume such a filter works is that it takes the DFT of the input, scales amplitudes based on what frequencies you want to keep and which you want to lower, then take the inverse, and do that for chunks at a time (possibly overlapping chunks?). How would that alter the phase? Maybe the delay caused by needing a large portion of the input before any output can be produced could cause a delay in the signal, but how would that equate to a different phase change per frequency?

Note that I have no idea how filters actually work, or if an "FFT-based filter" is even a thing people do, the video I linked above mentioned that however. I'll probably ask a second question on how FFT-based filters are implemented, and whether the assumptions I made above are correct.

• This video contains a number of inaccuracies and even misconceptions. I think you should consider other sources. Nov 27, 2022 at 21:46
• @Jazzmaniac I thought so too. What sources would you recommend?
– kepe
Nov 28, 2022 at 8:47
• Any introductory signal processing text should do. Filters are usually covered early on and not very hard to understand. Videos usually do not offer the level of detail and rigour that you'll find in literature. Nov 28, 2022 at 8:56

Whether a filter is implemented in the time or frequency domain does not matter. It will alter the phase of the input in a way consistent with its phase response. Consider a filter with frequency response expressed in its polar form: $$H(\omega) = G(\omega)e^{j\theta(\omega)}$$ with $$G(\omega) \triangleq |H(\omega)|$$ the filter's magnitude response and $$\theta(\omega) \triangleq \angle H(\omega)$$ its phase response.

Now apply this filter to an input signal with Fourier transform $$X(\omega) = |X(\omega)|e^{j\zeta(\omega)}$$ to get the output signal with Fourier transform $$Y(\omega) = |Y(\omega)|e^{j\phi(\omega)}$$: \begin{align} Y(\omega) &= H(\omega)X(\omega)\\\\ &=|H(\omega)|e^{j\theta(\omega)}|X(\omega)|e^{j\zeta(\omega)}\\\\ &=|H(\omega)X(\omega)|e^{j(\theta(\omega) + \zeta(\omega))} \end{align} which implies: $$$$|Y(\omega)| = |H(\omega)X(\omega)|$$$$ $$\phi(\omega) = \theta(\omega) + \zeta(\omega)$$ This latter relationship shows how the phase of the input signal $$\zeta(\omega)$$ is altered by the filter's phase response $$\theta(\omega)$$. Specifically, the output signal's phase equals the input signal's phase plus the filter phase at each frequency $$\omega$$.

• I see. What I don't understand is why a filter would have a phase response θ(ω) of anything other than zero, since just reducing the amplitudes of some frequencies using a DFT wouldn't change the phase, but another answer stated that's not how filters work, so I guess my question isn't exactly correct. I'll mark this answer as correct though.
– kepe
Nov 28, 2022 at 9:08
• @FireCubez You can just reduce amplitudes of some frequencies in the frequency domain, and keep the phase intact. However, it's not recommended.
– Jdip
Nov 28, 2022 at 10:00

I'd assume such a filter works is that it takes the DFT of the input, scales amplitudes based on what frequencies you want to keep and which you want to lower, then take the inverse,

You'd assume wrong. Doing frequency domain filtering is more complicated than that. If you want to dive into more detail: read up on Overlap Add or Overlap Save algorithms.