I have a measured FRF by impact testing and I have computed the IRF by ifft(). Now I want to compute the inverse IRF. I have read many posts in this forum about inverting FIR filters. As far as I understood, I must check where are my poles and zeros to see if my inverted FIR filter will be causal and stable. My initial idea was just inverting my FRF and computing again the corresponding IRF (inverse) by ifft(). Then, my poles become zeros and vice versa. When I do this I see that the inverse looks non-causal and quite noisy. Therefore, I want to check the zeros and poles. Here comes my first question:
1. How do you compute the zplot in Matlab from an FIR filter coming from a measurement?
My second question:
2. In this thread (https://www.dsprelated.com/showthread/comp.dsp/24411-1.php) I read that the inverted FIR filter might be longer (answer from Patrick Gaydecki). Why?
My third question, related to the second question:
3. Somewhere else I read that my inverted FIR might become an IIR. Is that true? And Why? Maybe that's why my inverted FIR becomes "longer".
I know there are other methods to compute the inverse FIR, (e.g. LMS inverse), but I want to try this method first.
Thank you in advance for your answers :)
What are the terms FRF and IRF?
FRF = Frequency Response Function
IRF = Impulse Response Function
FIR = Finite Impulse Response
Already raised by MichaelRW;
what is FRF, IRF and inverted IRF. OK we know what is iFFT.
What is inverted FIR filter, I assume you can reverse passband gain but any stopband info is lost for ever.
Please, see my answer to MichaelRW ;)
If by inverting FIR you mean low to high pass (...etc) then you can do that in two ways at least:
1) flip spectrum then do ifft
2) multiply your LPF by (+1,-1,+1,-1...) i.e. invert sign of every other coefficient.
With regard to # 3 question, you will see that if you write the z-domain or s-domain transfer function of an FIR filter and take its reciprocal, it becomes IIR, because it can be represented as a feedback loop. But, you can then approximate the IIR by expanding it using long division on the polynomial representation in terms of your sample times. You can truncate the resulting infinite series to make it FIR; just estimate the error due to truncation. I used this method to design an adaptive equalizer for fractionally-delayed multipath and it works wonderfully, although the FIR equalizer had about 12 symbol-spaced taps when the fractional-delay original channel model (and it inverse feedback structure) had only 1 fractional-symbol delay.
If you want I may be able to dig up my tech note and post it on Research Gate.