Why does my IIR filter become unstable when I change Filter arithmetic to Fixed-point using FDATOOL in Filter Design Toolbox 4.3 (R2008a)?

14 views (last 30 days)
I noticed that my filter is stable for Double-precision floating-point and Single-precision floating-point but unstable for Fixed-point. I would like to know if I can stabilize the filter without changing the frequency properties.
The reproduction steps are provided below:
a) Start FDATOOL
b) Select Bandpass for Response Type, Elliptic in IIR for Design Method, Filter Order 20. Set Fs to 44100, Fpass1 to 20 and Fpass2 to 250.
c) Design Filter
d) In "Set quantization parameters" pane, for Filter Arithmetic as Double-precision floating-point and Single-precision floating-point, the filter will be stable (as seen in "Current Filter Information" panel) and unstable when it is Fixed-point.

Accepted Answer

MathWorks Support Team
MathWorks Support Team on 27 Jun 2009
Converting an IIR filter from floating-point to fixed-point can be difficult, especially when the poles of the filter are close to the unit circle. The coefficients quantization error can make the filter unstable (as it is in this case). So it will not be possible to directly create a fixed-point filter with the same frequency preferences. However, depending on the application, one can use multirate/multistage FIR designs as they can be an efficient alternative to IIR designs for highly selective filters. FIR filters are much easier to convert to fixed-point.
Another alternative might be to use Wave Digital (also known as IIR polyphase) filters. A demo on this topic can be found by executing the following statement on the MATLAB command prompt (in R2008a):
web([matlabroot '/toolbox/filterdesign/filtdesdemos/html/iirallpassdemo.html'], '-helpbrowser')
  2 Comments
Sriram Narayanan
Sriram Narayanan on 24 Apr 2015
Edited: MathWorks Support Team on 24 Nov 2020
Hello Royi,
Sorry for the delayed response. Yes, the "filter" function calculates the filter corresponding to the data type you specify for the numerator, denominator coefficients and input data. It is double by default, but, also allows single data type.

Sign in to comment.

More Answers (0)

Categories

Find more on Floating-Point to Fixed-Point Conversion in Help Center and File Exchange

Tags

No tags entered yet.

Products


Release

R2008a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!