+ Post New Thread
Results 1 to 7 of 7
  1. #1
    Advanced Member level 5
    Points: 16,029, Level: 30
    pancho_hideboo's Avatar
    Join Date
    Oct 2006
    Location
    Real Homeless
    Posts
    2,439
    Helped
    652 / 652
    Points
    16,029
    Level
    30

    Rational Approximation of Gaussian LPF

    I know 5th order Bessel LPF is close to Gaussian LPF.

    But I want to get more close aaproximation as rational function expression.
    My book shows only hint for it.

    Is there anyone who know it ?

    •   AltAdvertisement

        
       

  2. #2
    Super Moderator
    Points: 257,401, Level: 100
    Awards:
    1st Helpful Member

    Join Date
    Jan 2008
    Location
    Bochum, Germany
    Posts
    44,914
    Helped
    13661 / 13661
    Points
    257,401
    Level
    100

    Re: Rational Approximation of Gaussian LPF

    Nuhertz Filter Solutions does a good approximation, slightly lower pole pair Q than Bessel, unfortunately I have no access right now.



  3. #3
    Advanced Member level 3
    Points: 5,634, Level: 17
    Dominik Przyborowski's Avatar
    Join Date
    Jun 2013
    Location
    Norway
    Posts
    743
    Helped
    311 / 311
    Points
    5,634
    Level
    17

    Re: Rational Approximation of Gaussian LPF

    The quassi-gaussian filter (bandpass, with quassi-gaussian impuls response) is CR-(RC) ^n, and for n>4 is no big difference.
    The mentioned by you Hurwitz approximation is the only one close to gauss which I know. It might be realized by complex pole 4th order guy. Unfortunately, I have literature to this only in Polish (my colleague master thesis with implementation)



    •   AltAdvertisement

        
       

  4. #4
    Advanced Member level 5
    Points: 16,029, Level: 30
    pancho_hideboo's Avatar
    Join Date
    Oct 2006
    Location
    Real Homeless
    Posts
    2,439
    Helped
    652 / 652
    Points
    16,029
    Level
    30

    Re: Rational Approximation of Gaussian LPF

    Attached figures show characteristics of Gaussian-LPF and Bessel-LPF in Keysight ADS.
    S(2,1), delay(2,1) : Gaussian-LPF
    S(4,3), delay(4,3) : Bessel-LPF

    I know what polynomials are used for Bessel-LPF.
    However I don't know about Gaussian-LPF.

    What polynomials are used for Gaussian-LPF in Keysight ADS ?



  5. #5
    Advanced Member level 3
    Points: 5,634, Level: 17
    Dominik Przyborowski's Avatar
    Join Date
    Jun 2013
    Location
    Norway
    Posts
    743
    Helped
    311 / 311
    Points
    5,634
    Level
    17

    Re: Rational Approximation of Gaussian LPF

    I have no idea what is used by ADS (i have not touched it even). As I mentioned, the only known for me case is an approximation of Hurwitz polynomials. The odd order polynomials has only complex poles, while even number has an additional real pole. The general formula is as follow (top is odd order, bottom even order):
    Click image for larger version. 

Name:	hurwitz_general.png 
Views:	1 
Size:	13.3 KB 
ID:	153869
    where: k is a number of complex poles pairs (for order n=2 and 3 k=1, for n=4,5 k=2, et cetera), σ is related to time constant (or natural frequency of filter), A_i and W_i are polynomial coefficients given for n<5 as following:
    Click image for larger version. 

Name:	hurwitz_coeff.png 
Views:	1 
Size:	12.9 KB 
ID:	153870
    for n=1:
    H(s)=1/(1+s)
    for n=2:
    H(s)=sqrt(2)/[sqrt(2)+sqrt((2)+2·sqrt(2))·σ·s+σ²·s²]
    For higher order I am not sure whether there is a simple values for poles.

    Try to look implement above, maybe it is what you need?

    Good luck!
    Last edited by Dominik Przyborowski; 20th June 2019 at 21:44.


    1 members found this post helpful.

    •   AltAdvertisement

        
       

  6. #6
    Advanced Member level 5
    Points: 16,029, Level: 30
    pancho_hideboo's Avatar
    Join Date
    Oct 2006
    Location
    Real Homeless
    Posts
    2,439
    Helped
    652 / 652
    Points
    16,029
    Level
    30

    Re: Rational Approximation of Gaussian LPF

    Thanks for good clue.

    Quote Originally Posted by Dominik Przyborowski View Post
    The odd order polynomials has only complex poles,
    while even number has an additional real pole.
    I think they are opposite.

    Quote Originally Posted by Dominik Przyborowski View Post
    The general formula is as follow (top is odd order, bottom even order):
    Why does top(odd order case) have zero at s=0 ?

    Quote Originally Posted by Dominik Przyborowski View Post
    For higher order I am not sure whether there is a simple values for poles.
    Try to look implement above, maybe it is what you need?
    I can calculate Taylor series expansion of exp(p^2), as eq. (13-73) in start of this thread by MATLAB.
    Then I can get zeros of it.
    I choose real(zeros) <= 0.0.
    These are poles for transfer function.

    Later I will build my own custom function for MATLAB.
    Code:
    function [z, p, k] = my_gaussianap(order, wc, Ac_dB)
    Then I will compare it with ADS results.
    Last edited by pancho_hideboo; 21st June 2019 at 15:39.



  7. #7
    Advanced Member level 5
    Points: 16,029, Level: 30
    pancho_hideboo's Avatar
    Join Date
    Oct 2006
    Location
    Real Homeless
    Posts
    2,439
    Helped
    652 / 652
    Points
    16,029
    Level
    30

    Re: Rational Approximation of Gaussian LPF

    I can get same result as ADS.
    Code:
    function [z, p, k] = my_gaussianap(order, wp, Ap_dB)
    s = tf('s');
    T2 = 0;
    for n = 0:order
        T2 = T2 + (-1)^n * s^(2*n) / factorial(n);
    end
    
    z = zero(T2);
    p = z( find(real(z) <= 0.0) );
    z = [];
    k = polyval(poly(p), 0);
    
    s21 = zpk(z, p, k);
    
    [wc, fval] = fzero(@(wc) dbv( freqresp(s21, wc) ) + Ap_dB, 1.0);
    fprintf(1, 'order=%d, ', order);
    fprintf(1, 'wc=%g, ', wc);
    fprintf( 1, 'Ac_dB=%g, ', -20*log10( freqresp(s21, wc) ) );
    
    z = (wp/wc) * z;
    p = (wp/wc) * p;
    k = k * (wp/wc)^( length(p)-length(z) );
    
    s21 = zpk(z, p, k);
    fprintf(1, 'wp=%g, ', wp);
    fprintf( 1, 'Ap_dB=%g\n', -20*log10( freqresp(s21, wp) ) );
    Last edited by pancho_hideboo; 21st June 2019 at 19:15.



--[[ ]]--