nlp2bp.mws

syntfil[NLP2BP]  - frequency transformation of transfer function poles and zeros of NLP to a particular biquadratic transfer function parameters of bandpass filter

syntfil[NLP2BP2]  - frequency transformation of transfer function poles and zeros of NLP to particular biquadratic transfer functions parameters of bandpass filter

Calling sequence:

      NLP2BP(f_p, fp, Gc, poles);

      NLP2BP(f_p, fp, Gc, poles, zeros);

      NLP2BP2(fm, delta_fp, Gc, poles);

      NLP2BP2(fm, delta_fp, Gc, poles, zeros);

Parameters:

      f_p      - lower cutoff frequency [Hz]

      fp       - upper cutoff frequency [Hz]

      fm       - passband geometric cetre  [Hz]

      delta_fp - passband width [Hz]

      Gc       - leading coefficient of denominator polynomial of transfer function H [-]

      poles    - 1D arrays of transfer function poles

      zeros    - 1D arrays of transfer function zeros (only for Cauer and Inverse Chebyshev transformations)

Parameters   f_p ,   fp , fm , delta_fp  and   Gc  must be positive and f_p  < fp .

Description:

The function returns a table  with description of filter type, value of gain constant and parameters omega[0] , Q , ( omega[n] ) of particular passband biquadratic transfer functions - sections . Pole-zero pairing and section arranging are made so that dynamic balancing and noise properties of final filter were optimal. Section number determines sequence of the section in cascade. The filter type is cascade_BP . This specification is necessary for transfer function compilation and for following filter synthesis. Biquadratic transfer function with gain constant h[0] = 1  is denoted by:

Info level:

Setting of variable infolevel[syntfil]  can be used to get more detailed results.

infolevel[syntfil] =

      2  - print of gain constant and parameters omega[0] , Q , ( omega[n] ) of particular biquadratic transfer functions in the order of Q-factor magnitudes

      3  - print of filter type + print of level 2

Examples:

>    with(syntfil):

`Syntfil version 1.53 loaded`

`You can set infolevel[syntfil] variable to 2..5 to get more detailed results!`

>    x:=BP2NLP(1000,1200,3000,4000,3,30):

>    N:=ChebyshevNLPOrder(x);

>    Gc,poles:=ChebyshevPoles(N);

N := 5, 1.444444444, 3

Gc, poles := 15.96205352, vector([-.5485987094e-1+.9659274757*I, -.5485987094e-1-.9659274757*I, -.1436250067+.5969760105*I, -.1436250067-.5969760105*I, -.1775302716])
Gc, poles := 15.96205352, vector([-.5485987094e-1+.9659274757*I, -.5485987094e-1-.9659274757*I, -.1436250067+.5969760105*I, -.1436250067-.5969760105*I, -.1775302716])

>    NLP2BP(1200,3000,Gc,poles);

TABLE([1 = TABLE([omega_0 = 9009.147001, Q = 7.628996202]), 2 = TABLE([omega_0 = 18577.62663, Q = 21.13610342]), 3 = TABLE([omega_0 = 7650.186231, Q = 21.13610342]), 5 = TABLE([omega_0 = 11921.50592, Q...
TABLE([1 = TABLE([omega_0 = 9009.147001, Q = 7.628996202]), 2 = TABLE([omega_0 = 18577.62663, Q = 21.13610342]), 3 = TABLE([omega_0 = 7650.186231, Q = 21.13610342]), 5 = TABLE([omega_0 = 11921.50592, Q...
TABLE([1 = TABLE([omega_0 = 9009.147001, Q = 7.628996202]), 2 = TABLE([omega_0 = 18577.62663, Q = 21.13610342]), 3 = TABLE([omega_0 = 7650.186231, Q = 21.13610342]), 5 = TABLE([omega_0 = 11921.50592, Q...
TABLE([1 = TABLE([omega_0 = 9009.147001, Q = 7.628996202]), 2 = TABLE([omega_0 = 18577.62663, Q = 21.13610342]), 3 = TABLE([omega_0 = 7650.186231, Q = 21.13610342]), 5 = TABLE([omega_0 = 11921.50592, Q...
TABLE([1 = TABLE([omega_0 = 9009.147001, Q = 7.628996202]), 2 = TABLE([omega_0 = 18577.62663, Q = 21.13610342]), 3 = TABLE([omega_0 = 7650.186231, Q = 21.13610342]), 5 = TABLE([omega_0 = 11921.50592, Q...

 

>    x:=BP22NLP(1900,1800,2600,3,30):

>    N:=ChebyshevNLPOrder(x);

>    Gc2,poles2,zeros2:=InvChebyshevPolesZeros(N);

N := 5, 1.444444445, 3

Gc2, poles2, zeros2 := 6.568776732, vector([-.2336953270+.9970117210*I, -.2336953270-.9970117210*I, -.8508936077+.8569639961*I, -.8508936077-.8569639961*I, -1.386631909]), vector([1.518778769*I, -1.518...
Gc2, poles2, zeros2 := 6.568776732, vector([-.2336953270+.9970117210*I, -.2336953270-.9970117210*I, -.8508936077+.8569639961*I, -.8508936077-.8569639961*I, -1.386631909]), vector([1.518778769*I, -1.518...

>    infolevel[syntfil]:=3:

>    NLP2BP2(1900,1800,Gc,poles2,zeros2);

type = cascade_BP

H0 = 0.214505

omega_0 = 11938.05209, Q = 0.76124

omega_0 =  7812.55049, Q = 1.35371, omega_n =  4423.70888

omega_0 = 18242.06933, Q = 1.35371, omega_n = 32216.65153

omega_0 =  7548.19679, Q = 4.99978, omega_n =  6117.94494

omega_0 = 18880.94488, Q = 4.99978, omega_n = 23294.92814

TABLE([1 = TABLE([omega_0 = 7812.550487, Q = 1.353714592, omega_n = 4423.708883]), 2 = TABLE([omega_0 = 18880.94488, Q = 4.999777313, omega_n = 23294.92814]), 3 = TABLE([omega_0 = 7548.196791, Q = 4.99...
TABLE([1 = TABLE([omega_0 = 7812.550487, Q = 1.353714592, omega_n = 4423.708883]), 2 = TABLE([omega_0 = 18880.94488, Q = 4.999777313, omega_n = 23294.92814]), 3 = TABLE([omega_0 = 7548.196791, Q = 4.99...
TABLE([1 = TABLE([omega_0 = 7812.550487, Q = 1.353714592, omega_n = 4423.708883]), 2 = TABLE([omega_0 = 18880.94488, Q = 4.999777313, omega_n = 23294.92814]), 3 = TABLE([omega_0 = 7548.196791, Q = 4.99...
TABLE([1 = TABLE([omega_0 = 7812.550487, Q = 1.353714592, omega_n = 4423.708883]), 2 = TABLE([omega_0 = 18880.94488, Q = 4.999777313, omega_n = 23294.92814]), 3 = TABLE([omega_0 = 7548.196791, Q = 4.99...
TABLE([1 = TABLE([omega_0 = 7812.550487, Q = 1.353714592, omega_n = 4423.708883]), 2 = TABLE([omega_0 = 18880.94488, Q = 4.999777313, omega_n = 23294.92814]), 3 = TABLE([omega_0 = 7548.196791, Q = 4.99...
TABLE([1 = TABLE([omega_0 = 7812.550487, Q = 1.353714592, omega_n = 4423.708883]), 2 = TABLE([omega_0 = 18880.94488, Q = 4.999777313, omega_n = 23294.92814]), 3 = TABLE([omega_0 = 7548.196791, Q = 4.99...

See also:

ButterworthPoles, ChebyshevPoles, InvChebyshevPolesZeros, InvChebyshevBPolesZeros, CauerPolesZeros, CauerBPolesZeros, CauerCPolesZeros

NLP2LP, NLP2HP, NLP2BS

MakeH, ARCSynt, ARCBlock, ARCBlock1