Prev Next fnbut

Normalized Butterworth Lowpass Filter
Syntax fnbut(Norder, b, a)
Include: O-Matrix file. No include required.
See Also fncheb1 , fncheb2 , fnbes , fn2clp , fn2chp , fn2cbp , fn2cbs

      Norder = SCALAR. Requested order of transfer function. Coerced to
               INTEGER before local processing. Norder >= 1.
      b      = VECTOR, COLUMN, for return (type disregarded on input).
               Numerator polynomial coefficients. Type DOUBLE.
      a      = VECTOR, COLUMN, for return (type disregarded on input).
               Denominator polynomial coefficients. Type DOUBLE.
   RETURN: novalue. Filter functions are returned in arguments 'b' and 'a'.


This function creates a normalized Butterworth s-domain (analog) lowpass transfer function of the form: H(s) = b(s)/a(s). The 3-dB cutoff frequency is set to 1 [radian/sec]. The requested filter order 'Norder' must be >= 1. The numerator polynomial of the transfer function is returned through argument 'b', and is a column vector where the elements form an ascending polynomial as follows:

b => b(1) + b(2)*s + b(3)*s^2 + ...

Denominator polynomial is returned in argument 'a', and is of the same form.

A Butterworth filter has a monotonically decreasing attenuation characteristic and is maximally flat in the passband. It has moderate selectivity, being lesser than the Chebyshev family but greater than a Bessel filter.

The resulting normalized embodied in polynomials 'b' and 'a' can be further scaled to different frequencies and filter types by the functions: fn2clp , fn2chp , fn2cbp , fn2cbs .


# Design BUTTERWORTH lowpass prototype filter, fc = 1 [radian/sec]
Norder  = 5;        # Filter Order
b       = novalue;  # Declare numerator   polynomial
a       = novalue;  # Declare denominator polynomial
fnbut(Norder,b,a);  # Make prototype filter

# Evaluate this filter around its cutoff.
fmin    =  1d-2; # Plotting Limits
fmax    =  1d0;
ymax    =  10d0;
ymin    = -60d0;

N       = 201; # Plotting information         
n       = seq(N)'-1d0;
f       = logspace(log10(fmin),log10(fmax),N)';
H       = gains(b,a,f);
HdB     = db20(H);
fc      = 1d0/2/PI; # 3dB down at this cutoff

A plot of the normalized BUTTERWORTH appears as: