What is the effect of increasing order of IIR filter? does it also effects stability? If we have an IIR filter of order 6, now we change its order to 7, will there be any change in its stability?


Stability depends on the pole locations, so one cannot generally say that increasing the filter order does or doesn't affect stability. It depends on how you increase the filter order. What are the additional coefficients of the denominator? (Because the denominator polynomial of the transfer function determines the pole locations).

Another question are the finite word length effects. If you quantize the filter coefficients, e.g., by using fixed point arithmetic (but of course also by using floating point), then higher filter orders tend to be more problematic than lower filter orders, because the chance that poles get very close to (or even outside) the unit circle through quantization becomes larger. But again, you cannot say anything in general unless you specify the filter's transfer function, the filter structure, and the type of quantization.


For direct implementation (without cascading), 6th order is already too high.

Let's look at the 6th order low-pass Butterworth filter with sample rate 24000 Hz and cut-off requency 110 Hz:

b0:  8.43345791e-12  a0:   1
b1:  5.06007475e-11  a1:  -5.88873409
b2:  1.26501869e-10  a2:  14.4498436
b3:  1.68669158e-10  a3: -18.91181708
b4:  1.26501869e-10  a4:  13.92373555
b5:  5.06007475e-11  a5:  -5.46772375
b6:  8.43345791e-12  a6:   0.89469577

The numerator (b) and denominator (a) coefficients have too much difference in order of magnitude. If this filter is implemented directly with single precision floating point, the rounding errors make it unstable:

Direct implementation of 6th order IIR filter

If the same filter is implemented as 3 cascaded second order sections, b and a have much less difference in orders of magnitude:

Stage 0
b0:  0.00020171  a0:  1
b1:  0.00040341  a1: -1.94507277
b2:  0.00020171  a2:  0.9458796

Stage 1
b0:  0.00020318  a0:  1
b1:  0.00040636  a1: -1.95927903
b2:  0.00020318  a2:  0.96009175

Stage 2
b0:  0.00020578  a0:  1
b1:  0.00041156  a1: -1.98438228
b2:  0.00020578  a2:  0.98520541

In this case, the cascaded implementation is stable even with single precision floating point:

enter image description here


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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