Signal Processing Stack Exchange is a question and answer site for practitioners of the art and science of signal, image and video processing. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I experiment with the coefficient quantization in an IIR filter. I change some values like the passband ripple and also how many bits i want for the quantization method. In the first picture i have 1db passband ripple , 'round'and 7-bits as the quantization method:

enter image description here

In the second picture i have 1.3db as the passband ripple ,'round' and 6-bits as quantization method.

enter image description here

These are the PZP diagrams. I dont understand how i can extract useful information from the diagrams in order to say which design is better or to make comparisons between these 2 designs.How the Poles and Zeros affect my decision for what is better?

edit: the images becomes bigger and more visible when you copy the url and open or select view image. Also with the green is the quantized and with blue the un-quantized coefficients.

edit2:As Matt asks for magnitude frequency response I have add the extra information:

1db passband ripple , 'round'and 7-bits

enter image description here

enter image description here

enter image description here

1.3db as the passband ripple ,'round' and 6-bits

enter image description here

enter image description here

enter image description here

EDIT: After the answer from Matt i need to add more information:

I want to find a set of quantized coefficients that meet the specification with the minimum number of bits. My specification is an 8th-order IIR filter with the following transfer function magnitude response: \begin{align*} 0\,\mathrm{db} \pm 1.5 \,\mathrm{db} & \quad \text{for } \quad 0.2<|v|<0.3 \cr \lt −60\,\mathrm{db} & \quad\text{for } \quad |v|<0.14\text{ and } |v|>0.36 \end{align*}

I use this matlab function: $ [b,a]=ellip(n,Rp,Rs,Wp) , $

after some trials i found that (the filter is implemented using second-order sections) : $ [b,a]=ellip(4,1,60,2*[0.2,0.3]) $ and using 7-bit quantization i take the diagram above that i think verify the specification (if i make a mistake please correct me) ,

but if a use: $ [b,a]=ellip(4,1.3,60,2*[0.2,0.3]) $ and 6-bit quantization also i take a reasonable result. My concern is if my thought and procedure is correct or i have a mistake and i need to stick with 7-bits quantization?

share|improve this question
up vote 1 down vote accepted

I provide another answer now that I can see the nice magnitude response plots. What we notice is of course a slight change in magnitude response due to coefficient quantization, but it is obviously relatively small. The stopband behavior is no problem at all, the only noticeable change is in the passbands, where there is a slight overshoot close to the band edges. This comes from the poles moving a bit closer to the unit circle after quantization. This overshoot is a bit bigger for the 6-bit design than for the 7-bit design, which doesn't come as a surprise (coarser quantization <=> more movement of the poles from their ideal positions). What is tolerable depends totally on the application. When asking which design is better, it is mandatory to answer the question "better for what?" beforehand. What I would do in any case is normalize the filters such that the maximum of the magnitude response is 1 even after quantization. This will avoid overflow problems (at least the ones due to coefficient quantization). All other measures that you may or may not need will depend on your application.

share|improve this answer
Thanks for your help, i have added few more information as edit in my question. If you have an idea on them i appreciate this. – 20317 Apr 14 '13 at 12:50
As far as I can see, the filters you designed satisfy your specs. One thing I noticed is the following: in your spec it says $\pm 1.5$dB passband ripple. Note that the passband ripple $R_p$ for the ellip() function is defined as a variation in the range $[0,-R_p]$ dB. That means that your allowed value for $R_p$ is actually 3 dB and not 1.5 dB. Of course you need some margin to take coefficient quantization into account. Furthermore, after you have a design, you must scale your filter such that the magnitude response oscillates between +1.5 dB and -1.5 dB in the passband ... – Matt L. Apr 14 '13 at 15:55
... according to you spec. The filters obtained by ellip() always have their maximum at 0dB and go down to $-R_p$ at the passband edge. – Matt L. Apr 14 '13 at 15:57
You mean that i can compute also this: [b,a]=ellip(4,3,60,2∗[0.2,0.3]), but because i need to quantize my coefficients the values for passband ripple(Rp):1 or 1.3 is valid? – 20317 Apr 14 '13 at 18:51

It is indeed hard to compare the two designs just using the pole-zero diagrams. I think it would be much more useful to have a look at the (magnitude of the) frequency responses, and compare the change of the frequency response before and after coefficient quantization. The only thing I can say from looking at the pole-zero plots is that you have designed an eighth order bandpass filter with center frequency $f_s/4$ (by $f_s$ I mean the sampling frequency).

share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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