nlp2lp.mws

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

Calling sequence:

      NLP2LP(fp, Gc, poles);

      NLP2LP(fp, Gc, poles, zeros);

Parameters:

      fp       - normalization frequency - cutoff frequency [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   fp   and   Gc   must be positive.

Description:

The function returns a table  with description of the filter type, value of the gain constant, cutoff frequency omega_0  of the first order section for even order transfer function and parameters omega[0] , Q , ( omega[n] ) of particular lowpass 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, whereas first order section is placed in the end. The filter type is cascade_LP . 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, cutoff frequency omega_0  of first order section for even order transfer function 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:=LP2NLP(1000,1500,3,20):

>    N:=ButterworthNLPOrder(x);

>    Gc,poles:=ButterworthPoles(N);

N := 6, 1.500000000, 3

Gc, poles := .9976283451, vector([-.9663081629+.2589214919*I, -.9663081629-.2589214919*I, -.7073866710+.7073866710*I, -.7073866710-.7073866710*I, -.2589214919+.9663081629*I, -.2589214919-.9663081629*I]...
Gc, poles := .9976283451, vector([-.9663081629+.2589214919*I, -.9663081629-.2589214919*I, -.7073866710+.7073866710*I, -.7073866710-.7073866710*I, -.2589214919+.9663081629*I, -.2589214919-.9663081629*I]...

>    NLP2LP(1000,Gc,poles);

TABLE([1 = TABLE([Q = .7071067810, omega_0 = 6285.672344]), 2 = TABLE([Q = 1.931851652, omega_0 = 6285.672344]), 3 = TABLE([Q = .5176380900, omega_0 = 6285.672344]), H0 = .9999999973, type = cascade_LP...
TABLE([1 = TABLE([Q = .7071067810, omega_0 = 6285.672344]), 2 = TABLE([Q = 1.931851652, omega_0 = 6285.672344]), 3 = TABLE([Q = .5176380900, omega_0 = 6285.672344]), H0 = .9999999973, type = cascade_LP...
TABLE([1 = TABLE([Q = .7071067810, omega_0 = 6285.672344]), 2 = TABLE([Q = 1.931851652, omega_0 = 6285.672344]), 3 = TABLE([Q = .5176380900, omega_0 = 6285.672344]), H0 = .9999999973, type = cascade_LP...
TABLE([1 = TABLE([Q = .7071067810, omega_0 = 6285.672344]), 2 = TABLE([Q = 1.931851652, omega_0 = 6285.672344]), 3 = TABLE([Q = .5176380900, omega_0 = 6285.672344]), H0 = .9999999973, type = cascade_LP...

 

>    Gc2,poles2,zeros2:=CauerPolesZeros(7,1.5,3):

>    infolevel[syntfil]:=3:

>    NLP2LP(1000,Gc,poles2,zeros2);

type = cascade_LP

H0 = 2904.736731

omega0 = 917.830639

omega_0 = 3184.39153, Q =  2.10260, omega_n = 19396.71114

omega_0 = 5241.08890, Q =  6.06901, omega_n = 11438.14181

omega_0 = 6205.42170, Q = 23.43931, omega_n =  9604.28039

TABLE([1 = TABLE([omega_n = 19396.71114, Q = 2.102602520, omega_0 = 3184.391526]), 2 = TABLE([omega_n = 11438.14181, Q = 6.069012925, omega_0 = 5241.088903]), 3 = TABLE([omega_n = 9604.280386, Q = 23.4...
TABLE([1 = TABLE([omega_n = 19396.71114, Q = 2.102602520, omega_0 = 3184.391526]), 2 = TABLE([omega_n = 11438.14181, Q = 6.069012925, omega_0 = 5241.088903]), 3 = TABLE([omega_n = 9604.280386, Q = 23.4...
TABLE([1 = TABLE([omega_n = 19396.71114, Q = 2.102602520, omega_0 = 3184.391526]), 2 = TABLE([omega_n = 11438.14181, Q = 6.069012925, omega_0 = 5241.088903]), 3 = TABLE([omega_n = 9604.280386, Q = 23.4...
TABLE([1 = TABLE([omega_n = 19396.71114, Q = 2.102602520, omega_0 = 3184.391526]), 2 = TABLE([omega_n = 11438.14181, Q = 6.069012925, omega_0 = 5241.088903]), 3 = TABLE([omega_n = 9604.280386, Q = 23.4...
TABLE([1 = TABLE([omega_n = 19396.71114, Q = 2.102602520, omega_0 = 3184.391526]), 2 = TABLE([omega_n = 11438.14181, Q = 6.069012925, omega_0 = 5241.088903]), 3 = TABLE([omega_n = 9604.280386, Q = 23.4...

>   

See also:

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

NLP2HP, NLP2BP, NLP2BP2, NLP2BS

MakeH, ARCSynt, ARCBlock, ARCBlock1