IIRFilters.BesselFilter Method

Overload List

#SignatureDescription
1function BesselFilter(Order: Integer; CutoffFreq: TDoubleArray; FilterType: TFilterType; Analog: Boolean; A: TMtx; B: TVec; C: TVec; out d: Double): Double;The resulting transfer function is returned in the state-space form with A,B,C,D variables.
2function BesselFilter(Order: Integer; CutoffFreq: TDoubleArray; FilterType: TFilterType; Analog: Boolean; Num: TVec; Den: TVec; IirFrequencyTransform: TIirFrequencyTransform): Double;The resulting transfer function is returned in the numerator/denumerator form with num and den.
3function BesselFilter(Order: Integer; CutoffFreq: TDoubleArray; FilterType: TFilterType; Analog: Boolean; z: TVec; p: TVec; var k: Double; IirFrequencyTransform: TIirFrequencyTransform): Double;Design Bessel IIR filter.

Overload 1: function BesselFilter(Order: Integer; CutoffFreq: TDoubleArray; FilterType: TFilterType; Analog: Boolean; A: TMtx; B: TVec; C: TVec; out d: Double): Double;

The resulting transfer function is returned in the state-space form with A,B,C,D variables.

#NameTypeDescription
1OrderInteger
2CutoffFreqTDoubleArray
3FilterTypeTFilterType
4AnalogBoolean
5ATMtxsource TMtx
6BTVecsource TVec
7CTVecsource TVec
8dDouble

Returns: Double

See Also: SignalUtils.IirFilter, IIRFilters.ButterFilter, IIRFilters.ChebyshevIFilter, IIRFilters.ChebyshevIIFilter, IIRFilters.EllipticFilter, IIRFilters.BesselAnalog, LinearSystems.Bilinear, IIRFilters.ButterOrder

Overload 2: function BesselFilter(Order: Integer; CutoffFreq: TDoubleArray; FilterType: TFilterType; Analog: Boolean; Num: TVec; Den: TVec; IirFrequencyTransform: TIirFrequencyTransform): Double;

The resulting transfer function is returned in the numerator/denumerator form with num and den.

#NameTypeDescription
1OrderInteger
2CutoffFreqTDoubleArray
3FilterTypeTFilterType
4AnalogBoolean
5NumTVecsource TVec
6DenTVecsource TVec
7IirFrequencyTransformTIirFrequencyTransform

Returns: Double

Overload 3: function BesselFilter(Order: Integer; CutoffFreq: TDoubleArray; FilterType: TFilterType; Analog: Boolean; z: TVec; p: TVec; var k: Double; IirFrequencyTransform: TIirFrequencyTransform): Double;

Design Bessel IIR filter.

#NameTypeDescription
1OrderInteger
2CutoffFreqTDoubleArray
3FilterTypeTFilterType
4AnalogBoolean
5zTVecsource TVec
6pTVecsource TVec
7kDouble
8IirFrequencyTransformTIirFrequencyTransform

Returns: Double

Remarks:

Design Bessel filter of Order with CutoffFreq frequencies and of FilterType type. Set Analog to True, to request an analog filter design in s-plane or set it to false to obtain a digital filter design in z-plane. CutoffFreq must be in range between 0 and 1 (Sampling frequency = 2).

IIrFrequencyTransform specifies when and how will the frequency band transformation be applied. Bessel filters typically do not preserve a flat group delay once transformed to z-domain. The routine uses bilinear transformation to map from s to z-domain. Use matched-Z transform to preserve more phase properties of the Bessel filters in the z-domain. The resulting transfer function is returned in the zero-pole form, with z,p,k variables.

Examples
uses MtxExpr, Math387, MtxVec, SignalUtils, MtxVecTee, MtxVecEdit, IirFilters,
LinearSystems;

procedure TForm1.Button1Click(Sender: TObject);
var z,p, num,den, FreqFr,Response: Vector;
Order: integer;
k,Bw,Wc: double;
WcArray: TDoubleArray; //modified 3dB frequency
begin
    BesselFilter(5,[3],ftLowpass,True,num,den);
    FreqFr.Length := 1000;         //Define the frequency grid (logarithmic)
    LogRamp(FreqFr,-1,1); //between 0.1 (=10^(-1)) and 10 (=10^1) rad/sec
    FrequencyResponseS(num,den,FreqFr,Response); //Laplace
    DrawIt(FreqFr,20*Log10(Abs(Response)));  //logarithmic frequency and amplitude
end;