I am a student trying to understand how this is possible. I've done some research on the web with not many sources showing up with solutions to this problem that are usable. What techniques are used to give an approximation of an FIR filter using IIR filters with say the same order?

  • $\begingroup$ What is your reason for wanting to do this? I was under the impression that in most cases an FIR filter would be preferred so trying to understand the motivation and possible advantages $\endgroup$ Apr 23 '20 at 1:57
  • 4
    $\begingroup$ Does this answer your question? dsp.stackexchange.com/questions/27085/… $\endgroup$ Apr 23 '20 at 1:59
  • $\begingroup$ I am looking for more specifically how to code it in Matlab. I am a beginner coder and am not very good at coding $\endgroup$
    – user
    Apr 23 '20 at 3:28
  • $\begingroup$ I suggest writing out the pseudo-code of what you would implement, derived from the other link to get to the root of your question, and then if there is a signal processing question you could ask that here- but if it is truly just specific to MATLAB coding you should probably ask that on StackOverflow $\endgroup$ Apr 23 '20 at 10:53

Sure there is.

The simplest version would be to calculate the transfer function of your FIR filter, sample it on some meaningful frequency grid and then shove it into invfreqz() to design the IIR filter.

Depening on you FIR filter this may work well or be a total disaster. In my experience invfreqz() does often very poorly.

If that's not good enough you can certainly write your own search an optimization algorithm. However, this is NOT a beginner project and requires significant math and coding skills.

See mathworks.com/help/signal/ref/invfreqz.html#mw_3c79f471-99ad-46f8-a680-14c29ff47d07

  • $\begingroup$ It's gonna be really hard to approximate a linear-phase FIR filter with an IIR. However, I think that approximating a minimum-phase FIR filter with an IIR is gonna be relatively easier. $\endgroup$
    – Ben
    Apr 23 '20 at 12:41

Not the answer you're looking for? Browse other questions tagged or ask your own question.