Bessel Filter
Syntax
Hd = bessel (Order, Frequencies, Type, DFormat)
Description
IIR Bessel filter design. Analog Bessel filters have a constant group delay in the passband, which is very desirable for a variety of measurement applications. The method implemented within FilterScript uses the Bilinear transform which modifies the standard analog Bessel characteristic, and as a consequence it does not preserve the constant group delay characteristic in the passband. You may equalise the group delay by using an all-pass filter, either in FilterScript or in the main tool with the all-pass filter designer.
- Near constant group delay in the passband.
- Slower roll-off than other prototypes
Cascading a single all-pass filter (designed with the all-pass filter designer) with the Bessel filter, linearizes the group delay in the passband – see below.
Hd = bessel (Order, Frequencies, Type, DFormat)
Order: may be specified up to 20 (professional) and up to 10 (educational) edition.
Frequencies: lowpass and highpass are specified via one cut-off frequency, whereas bandpass and bandstop filters require two frequencies (i.e. lower and upper cut-off). All frequencies must be ascending in order and < Nyquist (see the example below). Type: The Bessel method facilitates the design of lowpass, highpass, bandpass and bandstop filters respectively.
Hd: the Bessel method designs an IIR Bessel filter based on the entered specifications and places the transfer function (i.e. numerator, denominator, gain) into a digital filter object, Hd. The digital filter object can then be combined with other methods if so required. For a digital filter object, Hd, calling getnum(Hd), getden(Hd) and getgain(Hd) will extract the numerator, denominator and gain coefficients respectively – see below.
DFormat: allows you to specify the display format of resulting digital filter object.
symbolic |
Display a symbolic representation of the filter object. If the order > 10, the symbolic display option will be overridden and set to numeric |
numeric |
Display a matrix representation of the filter object |
void |
Create a filter object, but do not display output |
Example
[code lang=”java”]
ClearH1; // clear primary filter from cascade
ShowH2DM; // show DM on chart
Main()
F={75};
Order=5;
Hd=bessel(Order,F,”lowpass”,”symbolic”);
F={50,100};
Hd=bessel(Order,F,”bandpass”,”symbolic”);
Num = getnum(Hd); // define numerator coefficients
Den = getden(Hd); // define denominator coefficients
Gain = getgain(Hd); // define gain
[/code]
See also
bessel / butter / cheby1 / cheby2 / ellip / arbmagphase / cplxfreqshift / dcremover / notch / peaking