DSPRelated.com
Forums

IIR Filter Implementation in the Frequency Domain?

Started by Gsparky2004 3 weeks ago10 replieslatest reply 2 weeks ago188 views

Silly question: Is it possible to implement a IIR filter in the frequency domain just as you would a FIR filter? Or is the answer, "Well, you COULD, but that's a silly way to do it because you lose the computational efficiency of the feedback loop?"

[ - ]
Reply by kazMarch 3, 2025
[ - ]
Reply by Gsparky2004March 3, 2025

So, is that a "Yes, you can, but it's a silly way to do it?"

Let me ask the question a different way: Would anyone on this forum implement an IIR filter in the frequency domain? If so, what circumstances would it be under?

[ - ]
Reply by kazMarch 4, 2025

The link says clearly:

"you can always accomplish a given operation in either domain."

But who will want that. IIR idea is to reduce resource relative to FIR and going for FFT/iFFT and that formula in the link is absolute crazy.

It is only useful to know that theoretically as part of a lecture.

[ - ]
Reply by weetabixharryMarch 6, 2025

I think "absolutely crazy" may be slightly harsh. If you have a short signal, such as the preamble of a packet, then computing an FFT over the whole signal can be practical. For example, frequency-domain equalization is done that way (although, to my knowledge, the equalizer is always FIR).

But I think the key point is that frequency-domain FIR filtering is not usually implemented over the whole signal like this:

y = ifft(fft(x).*fft(b,n));

Instead, the FIR linear convolution is computed via a series of small circular convolutions, using overlap-add (like MATLAB's fftfilt function) or overlap-save (which is often preferred in hardware implementations). For large FIR filters, this can be very practical.

However, since an IIR filter has an infinite impulse response, it cannot be divided into small chunks. So, I don't think an efficient frequency-domain implementation could exist.

[ - ]
Reply by CharlieRaderMarch 6, 2025

This is going to be a careless reply. Can an efficient frequency domain exist?  


My late colleague Ben Gold did that. It had no practical value, so I don't remember the exact details, and that's obviously important. But the general idea was to convert blocks of the input signal to the frequency domain (each block sufficiently zero padded) and then use an IIR recursion on each bin of the DFTs, and invert them individually and use overlap add to put them back to a time domain signal. The IIR filter applied to samples in the frequency domain was NOT the same as the original, but it had the same order. 

If anyone thinks this could be useful, I can try to remember more of the details, but after so many years, I probably can't. 


[ - ]
Reply by Robert WolfeMarch 6, 2025

Just curious, why were you thinking about doing it that way? Maybe just intellectual curiousity about DSP, which of course is justficiation enough (IMO)

Regards,

Robert

[ - ]
Reply by Gsparky2004March 6, 2025

Not for implementation, but to answer a question from a student. (Kaz called it when he said, "It is only useful to know that theoretically as part of a lecture." That's exactly why I was asking the question. I was asked the question in a lecture.) I was teaching about basics of digital  filtering, and someone asked about implementing an infinite impulse response filter in the frequency-domain, just as a FIR would be. 

My response? First, I applauded the student for hitting me with a good "stump the dummy" question. Second, I did some basic research (hit all of the various books, such as Lyons, Smith, Oppenheim/Schafer, Proakis/Manolakis, Stearns/Hush) followed by a Google search to see if anyone had already done such an implementation. That didn't lead to a satisfying conclusion.

Hence, where better to post such a question?

Thank you, all, VERY much for your responses! This has been a satisfying discussion!

[ - ]
Reply by JohnEhlersMarch 6, 2025

The Maximum Entropy Method assumes an all-pole model of the filter.  It uses the Levinson recursion to find the coefficients of the filter.  This sort of fits your question.

[ - ]
Reply by rbjMarch 6, 2025

So Greg Berchin published a method called "Frequency-Domain Least Squares" (FDLS).

https://ieeexplore.ieee.org/document/101953


https://www.iro.umontreal.ca/~mignotte/IFT3205/Doc... 


Someone implemented Python (numpy) code:

https://github.com/blair3sat/fdls

[ - ]
Reply by arangurenjMarch 7, 2025

Nice to see my name on Gregg's article  :)https://www.iro.umontreal.ca/~mignotte/IFT3205/Doc...

(Acknowledgements section)