IIRFilters.BesselFilter Method

Overload List

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

Overload 1: Double BesselFilter(Int32 Order, Double[] CutoffFreq, TFilterType FilterType, Boolean Analog, TMtx A, TVec B, TVec C, ref Double d)

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

#NameTypeDescription
1OrderInt32
2CutoffFreqDouble[]
3FilterTypeTFilterType
4AnalogBoolean
5ATMtxsource TMtx
6BTVecsource TVec
7CTVecsource TVec
8dDouble (ref)output

Returns: Double

Examples
using Dew.Math;
using Dew.Math.Editors;
using Dew.Math.Units;
using Dew.Signal;
using Dew.Signal.Units;
using Dew.Math.Tee;
using Dew.Signal.Tee;

private void button1_Click(object sender, EventArgs e)
{
    Vector num = new Vector(0);
    Vector den = new Vector(0);
    Vector Response = new Vector(0);
    Vector FreqFr = new Vector(0);

    IIRFilters.BesselFilter(5, new double[1] {3}, TFilterType.ftLowpass, true, num,den,TIirFrequencyTransform.ftStateSpaceAnalog);  //design analog protype
    FreqFr.Length = 1000;
    SignalUtils.LogRamp(FreqFr, -1, 1);
    SignalUtils.FrequencyResponseS(num, den, FreqFr, Response, 0);
    MtxVecTee.DrawIt(Response, "Frequency response", false);
}
See Also: SignalUtils.IirFilter, IIRFilters.ButterFilter, IIRFilters.ChebyshevIFilter, IIRFilters.ChebyshevIIFilter, IIRFilters.EllipticFilter, IIRFilters.BesselAnalog, LinearSystems.Bilinear, IIRFilters.ButterOrder

Overload 2: Double BesselFilter(Int32 Order, Double[] CutoffFreq, TFilterType FilterType, Boolean Analog, TVec Num, TVec Den, TIirFrequencyTransform IirFrequencyTransform)

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

#NameTypeDescription
1OrderInt32
2CutoffFreqDouble[]
3FilterTypeTFilterType
4AnalogBoolean
5NumTVecsource TVec
6DenTVecsource TVec
7IirFrequencyTransformTIirFrequencyTransform

Returns: Double

Overload 3: Double BesselFilter(Int32 Order, Double[] CutoffFreq, TFilterType FilterType, Boolean Analog, TVec z, TVec p, ref Double k, TIirFrequencyTransform IirFrequencyTransform)

Design Bessel IIR filter.

#NameTypeDescription
1OrderInt32
2CutoffFreqDouble[]
3FilterTypeTFilterType
4AnalogBoolean
5zTVecsource TVec
6pTVecsource TVec
7kDouble (ref)output
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.