# IIR System Identification Difficult Problem

Identifying IIR systems is considered a difficult problem and different approaches have been proposed. Why is it considered difficult? I would like to find an accessible discussion of the problem (a link to an academic paper online would be ideal). Is there a good discussion somewhere?

Identifying IIR systems is considered a difficult problem

This really depends on the specifics. Sometimes, it's easy, sometimes it's difficult.

Why is it considered difficult?

It tends to get difficult if the order of the filter is high, if there is a lot of detail at low frequencies and if the target phase is inherently non-causal.

The first two are related to the fact that most of the standard algorithms (such as Matlab's invfreqz() operate in the "transfer function domain" which at some point needs to be converted to poles and zeros. This involves finding the roots of a polynomial which is numerically difficult, especially if the order is high and the roots are close together.

As a simple example let's design a 8th order Butterworth highpass filter at 40 Hz sampled at 48 kHz (which is a typical filter you can find in a HIFI speaker).

We design as poles and zeros, then convert to transfer function and then back again to poles and zeros. We can see that originally all zeros are at $$z=1$$ and the poles are on an ellipse inside the unit circle. After the back and forth conversion, both poles and zeroes have moved quite a bit. In fact, some of the poles are now outside the unit circle and the resulting filter is unstable.

A more mathematical view would be that the algorithms are based on solving a least squared error problem and that in some cases the error surface is extremely steep and badly shaped. For filters that are often used in audio, it's not unusual to see gradients that are 10 or more orders of magnitude larger than the actual coefficients). The resulting matrices are often poorly conditioned and iterative search algorithms have trouble converging.

The "causality" argument is more complicated, so I'm going to skip it here. In conclusion, there are effective methods of IIR system identification but they are cases where the "simple" algorithms fail miserably and the there is no "one size fits" all work-around. Most more advanced algorithms are tailored & optimized to the specific class of systems and problems that you are trying to solve.

%% design 8th order BW high pass
fs = 48000;
[z,p,k] = butter(8,2*40/fs,'high');
% convert to transfer function
[b1,a1] = zp2tf(z,p,k);
% convert back to poles and zeros
[z1,p1,k1] = tf2zp(b1,a1);
% and plot it
clf;
zplaneplot([z z1],[p p1]);
grid('on');
lims = .03*[-1 1];
set(gca,'xlim',1+lims);
set(gca,'ylim',lims);
legend('original','after conversion');
title('8th order BW highpass @48kHz');

• Thank you. It is good to know I can't be expected to find a one size fits all approach. Is there a reference - book or paper - I could cite that recognizes this? Mar 1 at 10:44
• @TobiasCarlson one option is to simply quote Hilmar's answer. Mar 4 at 3:49
• What someone can reasonably expect depends on the specific circumstances and requirements. I sincerely doubt that anyone asked the OP to provide IIR system identification that work under any and all circumstance to a high degree of accuracy. Even if someone did, a simple clarification question can go a long way. Mar 5 at 8:44
• The problem was given in completely general terms for FIR and IIR filters. No suggestion that a patchwork of approaches to identifying IIR filters is necessary because any individual approach would fail radically for some subset of filters. Mar 5 at 11:23