Gain in IIR Chebyshev Filter?

Started by superraton February 5, 2009
Hi everyone!!
I have a problem when I calculate the coeffs of my chebyshev IIR filters
(via Bilineal Transformation), and I hope someone can help me!
The thing is that when I compare my coeffs with other filter design
softwares, the denominator coeffs are correct but the numerator ones I get
are multiplied by a gain. That is:

For LP, e.g. order 1, and H(z) = (A + Az^-1)/(1 + Bz^-1) --> (A+A)/(1+B)

For HP, e.g. order 1, and H(z) = (A - Az^-1)/(1 + Bz^-1) -->
(A-(-A))/(1+B)

Appart from the fact that for even order chebyshev 1 filters must be
multiplied for a 1/SQRT(10^(Apass*0.1) - 1) factor, is it normal that I get
this additional gain or I just made something wrong in the process?

I just gave a short explanation of the problem because I dont want to bore
anyone, but if this is familiar for some of you and might be able to help
me, please let me know and I will give you more details.
Thank you very very much to all of you for your attention!!!
Superraton.



On 5 Feb, 17:28, "superraton" <sillasyceril...@hotmail.com> wrote:
> Hi everyone!! > I have a problem when I calculate the coeffs of my chebyshev IIR filters > (via Bilineal Transformation), and I hope someone can help me! > The thing is that when I compare my coeffs with other filter design > softwares, the denominator coeffs are correct but the numerator ones I get > are multiplied by a gain.
This has to do with the order of the type I Chebychevs. For either even or odd order (I don't remember which) the gain at DC is 1, and for the other the gain at DC is the ripple factor. Check out what orders (even, odd) should not intersect DC qith gain 1, and figure out what gain they should have. Rune
On Feb 5, 11:44&#2013266080;am, Rune Allnor <all...@tele.ntnu.no> wrote:
> On 5 Feb, 17:28, "superraton" <sillasyceril...@hotmail.com> wrote: > > > I have a problem when I calculate the coeffs of my chebyshev IIR filters > > (via Bilineal Transformation), and I hope someone can help me! > > The thing is that when I compare my coeffs with other filter design > > softwares, the denominator coeffs are correct but the numerator ones I get > > are multiplied by a gain. > > This has to do with the order of the type I Chebychevs. > For either even or odd order (I don't remember which) > the gain at DC is 1, and for the other the gain at DC > is the ripple factor. >
oh, lessee which: |H(j*w)|^2 = 1/( 1 + (eps*Tn(w))^2 ) where Tn(w) = cos(n *arccos(w)) for |w| <= 1 Tn(w) = cosh(n *arccosh(w)) for w >= 1 Tn(w) = (-1)^n * cosh(n *arccosh(-w)) for w <= -1 i think it's the case that Tn(0) = cos(n * pi/2) = +/- 1 for even n, 0 for odd n so it's the even order Tchebyshev that dips down to 1/sqrt(1 + eps^2) at DC. i dunno why that should be compensated (it would boost the gain in the passband to more than 1), but that could easily depend on particulars of the situation of which i know nothing of. r b-j
Hi Rune and Robert!
Thanks for your replies. I was already aware that EVEN order filters gain
must be compensated by the ripple factor. 
The thing is that apart from that, I get an extra gain factor which I must
compensate in order to get gain 1. 
Do you know if that is the normal procedure in IIR chebyshev filter
design? Or I should get directly a filter with gain 1 after compensation of
the ripple factor?
Thanks again!
On Feb 6, 2:57&#2013266080;am, "superraton" <sillasyceril...@hotmail.com> wrote:
> ... I was already aware that EVEN order filters gain > must be compensated by the ripple factor.
why "must" it be so compensated?
> The thing is that apart from that, I get an extra gain factor which I must > compensate in order to get gain 1.
how is that "apart" from the previous? for odd-order Tchebyshev (without this gain compensation you refer to), the gain at DC is 1. for even order, it's 1/sqrt(1+eps^2).
> Do you know if that is the normal procedure in IIR chebyshev filter > design?
"normal" is whatever you want it to be. in audio, i have on past occasions, done even-order Tchebyshev filters and i never compensated that small deviation to the DC gain. this compensation would boost the passband gain to more than 1 at most other passband frequencies.
> Or I should get directly a filter with gain 1 after compensation of > the ripple factor?
if, for some reason, this filter was in a feedback loop and DC was the salient frequency, then you have to do whatever you must to keep the feedback loop stable. otherwise, i don't get what the necessity is. so the DC gain is -10*log10(1+eps^2) dB. other frequencies will also have the same gain. if you adjust the overall gain to fix that, then there are other frequencies in the passband where the gain will be more than 0 dB. might be okay, maybe not. depends entirely on the particulars or your situation. r b-j
>how is that "apart" from the previous? for odd-order Tchebyshev >(without this gain compensation you refer to), the gain at DC is 1. >for even order, it's 1/sqrt(1+eps^2).
So I guess I have done something wrong, because my gain at DC is not one for odd orders or 1/sqrt(1+eps^2) for even orders... Just in case it might help I will copy the coeffs I get for e.g: LP ord 2, Sampling freq=1Khz, Cutoff freq=100hz, Ripple = 0.99763 (for Ap=-3dB) and H(z)= (A + 2Az^-1 + Az^-2)/(1 + Bz^-1 + Cz^-2) A= 0.082203847163826033 B= -1.4408999704847574 C= 0.67368409495431092 Against another filter design sofware (WFilter) with same specifications: A&acute;= 0.0411996348974 B&acute;= -1.44089997048 C&acute;= 0.673684094954 Well, if I divide my A's with GAIN = ((A+2A+A)/(1+B+C)) * sqrt(1+eps^2) , I get the same coefficients! --> A&acute; = A / GAIN Do you still have the formulas of your filter coefficients? I might have something wrong in my A's... Or maybe you know a book where you can find these coefficients written? Thank you so so much for your help again!!! SR.
>how is that "apart" from the previous? for odd-order Tchebyshev >(without this gain compensation you refer to), the gain at DC is 1. >for even order, it's 1/sqrt(1+eps^2).
So I guess I have done something wrong, because my gain at DC is not one for odd orders or 1/sqrt(1+eps^2) for even orders... Just in case it might help I will copy the coeffs I get for e.g: LP ord 2, Sampling freq=1Khz, Cutoff freq=100hz, Ripple = 0.99763 (for Ap=-3dB) and H(z)= (A + 2Az^-1 + Az^-2)/(1 + Bz^-1 + Cz^-2) A= 0.082203847163826033 B= -1.4408999704847574 C= 0.67368409495431092 Against another filter design sofware (WFilter) with same specifications: A&acute;= 0.0411996348974 B&acute;= -1.44089997048 C&acute;= 0.673684094954 Well, if I divide my A's with GAIN = ((A+2A+A)/(1+B+C)) * sqrt(1+eps^2) , I get the same coefficients! --> A&acute; = A / GAIN Do you still have the formulas of your filter coefficients? I might have something wrong in my A's... Or maybe you know a book where you can find these coefficients written? Thank you so so much for your help again!!! SR.
On 10 Feb, 11:38, "superraton" <sillasyceril...@hotmail.com> wrote:

> A= 0.082203847163826033 > B= -1.4408999704847574 > C= 0.67368409495431092 > > Against another filter design sofware (WFilter) with same specifications: > > A&#2013266100;= 0.0411996348974 > B&#2013266100;= -1.44089997048 > C&#2013266100;= 0.673684094954 > > Well, if I divide my A's with GAIN = ((A+2A+A)/(1+B+C)) * sqrt(1+eps^2) , > I get the same coefficients! > --> A&#2013266100; = A / GAIN > > Do you still have the formulas of your filter coefficients? I might have > something wrong in my A's...
Seems very likely. From what I can see, the numbers for B and C match to whithin printing precision.
> Or maybe you know a book where you can find these coefficients written?
Not the coefficients, but the formulas. The books I know of, where these things are covered in some depth, are van Valkenburg: Analog Filter Design (1982) Antoniou: Digital Signal Processing (2006) There is some mentioning of these things in intermediate-level books on DSP, like Proakis & Manolakis, and Oppenheim & Schafer. Rune
On 10 Feb, 11:59, Rune Allnor <all...@tele.ntnu.no> wrote:
> On 10 Feb, 11:38, "superraton" <sillasyceril...@hotmail.com> wrote: > > A= 0.082203847163826033 > > B= -1.4408999704847574 > > C= 0.67368409495431092 > > > Against another filter design sofware (WFilter) with same specifications: > > > A&#2013266100;= 0.0411996348974 > > B&#2013266100;= -1.44089997048 > > C&#2013266100;= 0.673684094954 > > > Well, if I divide my A's with GAIN = ((A+2A+A)/(1+B+C)) * sqrt(1+eps^2) , > > I get the same coefficients! > > --> A&#2013266100; = A / GAIN > > > Do you still have the formulas of your filter coefficients? I might have > > something wrong in my A's... > > Seems very likely. From what I can see, the numbers for B > and C match to whithin printing precision.
I just looked up the Cheb 1 filters in Proakis & Manolakis. The prototype s-domain filter function is on the form H(s) = 1/polynomial that is, only one constant coefficient in the numerator. Since you have problems with the numerator coeffcients, I'd suggest you have a look on the Bilinear Transform routine. It might be easier to find a test case for the BLT than for the full-scale cheb 1 design. Rune
Hi Rune and Robert!
I finally found the normalisation factor for my nominator coefficients.
For every k pole of the filter transfer function Sk = Ak + iBk , the gain
factor is the summatory of the square modulus of each pole:
G = (A0^2 + B0^2)^2 + (A1^2 + B1^2)^2 + ... + (Ak^2 + Bk^2)^2
Of course, for even orders, the num coeffs must be also multiplicated by
the 10^(-0.05*Ap) factor before mentioned.
Thank you very much for your help!
ps: this is very well explained in the Andreas Antoniou book (page 489)