IIRFilters::BesselFilter Function

Overload List

#SignatureDescription
1double BesselFilter(int Order, const DewArray<double> &CutoffFreq, TFilterType FilterType, bool Analog, TVec *z, TVec *p, double &k, TIirFrequencyTransform IirFrequencyTransform = TIirFrequencyTransform::ftStateSpaceAnalog);Design Bessel IIR filter.
2double BesselFilter(int Order, const DewArray<double> &CutoffFreq, TFilterType FilterType, bool Analog, TVec *Num, TVec *Den, TIirFrequencyTransform IirFrequencyTransform = TIirFrequencyTransform::ftStateSpaceAnalog);The resulting transfer function is returned in the numerator/denumerator form with num and den.
3double BesselFilter(int Order, const DewArray<double> &CutoffFreq, TFilterType FilterType, bool Analog, TMtx *A, TVec *B, TVec *C, double &d);The resulting transfer function is returned in the state-space form with A,B,C,D variables.

Overload 1: double BesselFilter(int Order, const DewArray<double> &CutoffFreq, TFilterType FilterType, bool Analog, TVec *z, TVec *p, double &k, TIirFrequencyTransform IirFrequencyTransform = TIirFrequencyTransform::ftStateSpaceAnalog);

Design Bessel IIR filter.

#NameTypeDescription
1Orderint
2CutoffFreqconst DewArray<double> &
3FilterTypeTFilterType
4Analogbool
5zTVec *
6pTVec *
7kdouble &
8IirFrequencyTransform = TIirFrequencyTransform::ftStateSpaceAnalogTIirFrequencyTransform
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
#include "MtxExpr.h"
#include "Units.IIrFilters.h"
#include "Units.SignalUtils.h"

using namespace Dew;
using namespace Dew::Math;
using namespace Dew::Signal;
using namespace Dew::Signal::Units::IIRFilters;
using namespace Dew::Signal::Units::SignalUtils;

void Example()
{
    Vector z, p, num, den, FreqFr, Response;
    int Order;
    double k, Bw, Wc;
    DewArray<double> WcArray; //modified 3dB frequency

    BesselFilter(5, DewArray<double>{3}, TFilterType::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
}
Declared in Dew::Signal::Units::IIRFilters · Dew.Signal/Units.IIrFilters.h · Cross-compiler

Overload 2: double BesselFilter(int Order, const DewArray<double> &CutoffFreq, TFilterType FilterType, bool Analog, TVec *Num, TVec *Den, TIirFrequencyTransform IirFrequencyTransform = TIirFrequencyTransform::ftStateSpaceAnalog);

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

#NameTypeDescription
1Orderint
2CutoffFreqconst DewArray<double> &
3FilterTypeTFilterType
4Analogbool
5NumTVec *
6DenTVec *
7IirFrequencyTransform = TIirFrequencyTransform::ftStateSpaceAnalogTIirFrequencyTransform
Declared in Dew::Signal::Units::IIRFilters · Dew.Signal/Units.IIrFilters.h · Cross-compiler

Overload 3: double BesselFilter(int Order, const DewArray<double> &CutoffFreq, TFilterType FilterType, bool Analog, TMtx *A, TVec *B, TVec *C, double &d);

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

#NameTypeDescription
1Orderint
2CutoffFreqconst DewArray<double> &
3FilterTypeTFilterType
4Analogbool
5ATMtx *
6BTVec *
7CTVec *
8ddouble &
Examples
#include "MtxExpr.h"
#include "Units.IIrFilters.h"
#include "Units.SignalUtils.h"

using namespace Dew;
using namespace Dew::Math;
using namespace Dew::Signal;
using namespace Dew::Signal::Units::IIRFilters;
using namespace Dew::Signal::Units::SignalUtils;

void Example()
{
    Vector num(0);
    Vector den(0);
    Vector Response(0);
    Vector FreqFr(0);

    BesselFilter(5, DewArray<double>{3}, TFilterType::ftLowpass, true, num, den, TIirFrequencyTransform::ftStateSpaceAnalog);  //design analog protype
    FreqFr.Length = 1000;
    LogRamp(FreqFr, -1, 1);
    FrequencyResponseS(num, den, FreqFr, Response, 0);
}
See Also: IirFilter, IIRFilters::ButterFilter, IIRFilters::ChebyshevIFilter, IIRFilters::ChebyshevIIFilter, IIRFilters::EllipticFilter, IIRFilters::BesselAnalog, Bilinear, IIRFilters::ButterOrder
Declared in Dew::Signal::Units::IIRFilters · Dew.Signal/Units.IIrFilters.h · Cross-compiler