0
$\begingroup$

I am designing a 2nd order IIR digital filter :

My tf equation with coefficients is

b = [0 1.209e09]
a= [9.2175   -2.6952    1.0000]
sys=tf(b,a,0.1,'Variable','z^-1')
bode(sys)

I have couple of questions :

  1. How to get unity scaling .. as a formula... so that i can always multiply it with the 'sys' tf.
  2. I usually seen that coefficients are less than 1 , is there a way i can make them so ?
  3. My coefficients are calculated from some adaptive filter optimization algorithm, so they keep on changing, is there a way i can reduce the filter to filter coefficients changes to a a minimum.?
$\endgroup$
1
$\begingroup$

It's important to specify at which frequency you want unity gain. But assuming you mean DC ($\omega=0$), because that filter has a low pass characteristic, the DC gain of an IIR filter is given by

$$G_{DC}=\frac{\sum_kb[k]}{\sum_ka[k]}\tag{1}$$

It's also common to normalize the denominator coefficients such that $a[0]=1$. In your example that would give

a = [1.00000 -0.29240 0.10849]

and

b = [0.00000 131163547.59967]

Finally, normalizing by the DC gain $(1)$ will give you a filter with unity gain at DC. This leaves the denominator coefficients unchanged, and the new normalized numerator coefficients are given by

b = [0.00000 0.81609]

| improve this answer | |
$\endgroup$
  • $\begingroup$ Thankyou so much :) $\endgroup$ – BandW Jun 23 at 9:01
0
$\begingroup$
b = [0 1.209e09]
a= [9.2175   -2.6952    1.0000]

% original -----------------------
sys = tf(b,a,0.1,'Variable','z^-1');

% fixes --------------------------
sys=sys/dcgain(sys);

% scale coefficients by b(2) 
sys1=tf(b/b(2),a/b(2),0.1,'Variable','z^-1')
sys1=sys1/dcgain(sys1);

bode(sys,'-', sys1,'--')

Which results:

Transfer function 'sys' from input 'u1' to output ...

           1.209e+09 z^-2
 y1:  -------------------------
      9.217 - 2.695 z^-1 + z^-2

Transfer function 'sys1' from input 'u1' to output ...

                         z^-2
 y1:  -------------------------------------------
      7.624e-09 - 2.229e-09 z^-1 + 8.271e-10 z^-2
| improve this answer | |
$\endgroup$
  • $\begingroup$ can you please write the code how you did it... how did you get y1 ? also now we very small coefcients.. is that correct ?.. also pole (z-2) is not 1 anymore $\endgroup$ – BandW Jun 22 at 15:00
  • $\begingroup$ Updated the code. Hope it helps.... . $\endgroup$ – Juha P Jun 22 at 17:05
  • $\begingroup$ Thankyou so much :) $\endgroup$ – BandW Jun 23 at 9:01

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.