r/DSP•
ReasonHead

Interpolation/decimation filter - polyphase vs. FFT convolution

I only ever see polyphase filters mentioned for interpolation/decimation filters. Are they always faster than doing FFT convolution? Or are the number of taps too few to justify going to the frequency domain?

Posted Apr 1, 2020, 9:47 PM UTC

104
AssemblerGuy•

Are they always faster than doing FFT convolution?

For decimation? Yes, they can be. Because when they are nonrecursive, they only need to be computed for each output value (e.g. at 16:1 decimation, the filter output only needs to be calculated every 16th input sample). There are also clever ways for implementing moving average filters (often used for decimation) that require only a handful of arithmetic operations (cascaded integrator-comb filters/sinc^x filters) no matter how long the averaging window is - for this type of filter, the time-domain approach completely outclasses the frequency-domain one.

Also, the detour through the frequency domain introduces an inevitable delay by its block size, while the time-domain approach has no such delays.

3
ReasonHeadOP•

Right, I forgot about moving average and CICs. I've always done interpolation with windowed sincs and wanted to switch to Lanzcos now but CICs might be the better option.

1
AssemblerGuy•

In general, sparse FIR filters (or anything that can be converted to a simple recursive part and a sparse nonrecursive part) are more efficient in the time domain.

1
jshakes213•

So you could in each of your polyphase branches do an FFT based convolution, it depends on how long your filters are but it is definitely possible.

1