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$

2 Answers 2

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]

$\endgroup$
1
  • $\begingroup$ Thankyou so much :) $\endgroup$
    – BandW
    Commented Jun 23, 2020 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
$\endgroup$
3
  • $\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
    Commented Jun 22, 2020 at 15:00
  • $\begingroup$ Updated the code. Hope it helps.... . $\endgroup$
    – Juha P
    Commented Jun 22, 2020 at 17:05
  • $\begingroup$ Thankyou so much :) $\endgroup$
    – BandW
    Commented Jun 23, 2020 at 9:01

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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