IIRFilters.EllipticFilter Method

Overload List

#SignatureDescription
1Double EllipticFilter(Int32 Order, Double PassRipple, Double StopRipple, 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 EllipticFilter(Int32 Order, Double PassRipple, Double StopRipple, 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 EllipticFilter(Int32 Order, Double PassRipple, Double StopRipple, Double[] CutoffFreq, TFilterType FilterType, Boolean Analog, TVec z, TVec p, ref Double k, TIirFrequencyTransform IirFrequencyTransform)Design Elliptic IIR filter.
4Double EllipticFilter(Int32 Order, Double PassRipple, Double StopRipple, Double[] CutoffFreq, TFilterType FilterType, Boolean Analog, TVec sos, TIirFrequencyTransform IirFrequencyTransform)The resulting transfer function is returned in the second order section form stored in the sos variable.

Overload 1: Double EllipticFilter(Int32 Order, Double PassRipple, Double StopRipple, 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
2PassRippleDoublescalar
3StopRippleDoublescalar
4CutoffFreqDouble[]
5FilterTypeTFilterType
6AnalogBoolean
7ATMtxsource TMtx
8BTVecsource TVec
9CTVecsource TVec
10dDouble (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 z = new Vector(0);
    Vector p = new Vector(0);
    Vector num = new Vector(0);
    Vector den = new Vector(0);
    Vector Response = new Vector(0);

    double[] WcArray = new double[1];
    int Order; //design a fifth order filter.

    Order = IIRFilters.EllipticOrder(new double[2] { 5.0/15, 6.0/15 }, 0.1, 40, TFilterType.ftLowpass, ref WcArray, false);  //design analog protype
    IIRFilters.EllipticFilter(Order, 0.1,40, WcArray, TFilterType.ftLowpass, false, num, den, TIirFrequencyTransform.ftStateSpaceAnalog);

    SignalUtils.FrequencyResponse(num, den, Response, 32, false, TSignalWindowType.wtRectangular, 0);

    Vector FreqFr = MtxExpr.Ramp(Response.Length, TMtxFloatPrecision.mvDouble,0, 30*0.5 / Response.Length); //X axis
    MtxVecTee.DrawIt(FreqFr, Response, "Frequency response", false);
}
See Also: SignalUtils.IirFilter, IIRFilters.ButterFilter, IIRFilters.ChebyshevIFilter, IIRFilters.ChebyshevIIFilter, IIRFilters.BesselFilter, IIRFilters.EllipticAnalog, LinearSystems.Bilinear, IIRFilters.EllipticOrder

Overload 2: Double EllipticFilter(Int32 Order, Double PassRipple, Double StopRipple, 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
2PassRippleDoublescalar
3StopRippleDoublescalar
4CutoffFreqDouble[]
5FilterTypeTFilterType
6AnalogBoolean
7NumTVecsource TVec
8DenTVecsource TVec
9IirFrequencyTransformTIirFrequencyTransform

Returns: Double

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

Design Elliptic IIR filter.

#NameTypeDescription
1OrderInt32
2PassRippleDoublescalar
3StopRippleDoublescalar
4CutoffFreqDouble[]
5FilterTypeTFilterType
6AnalogBoolean
7zTVecsource TVec
8pTVecsource TVec
9kDouble (ref)output
10IirFrequencyTransformTIirFrequencyTransform

Returns: Double

Remarks:

Design Elliptic 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) in case of a digital filter design.

IIrFrequencyTransform specifies when and how will the frequency band transformation be applied. PassRipple defines the passband ripple in dB and StopRipple defines the stopband ripple in dB. The resulting transfer function is returned in the zero-pole form, with z,p,k variables.

Overload 4: Double EllipticFilter(Int32 Order, Double PassRipple, Double StopRipple, Double[] CutoffFreq, TFilterType FilterType, Boolean Analog, TVec sos, TIirFrequencyTransform IirFrequencyTransform)

The resulting transfer function is returned in the second order section form stored in the sos variable.

#NameTypeDescription
1OrderInt32
2PassRippleDoublescalar
3StopRippleDoublescalar
4CutoffFreqDouble[]
5FilterTypeTFilterType
6AnalogBoolean
7sosTVecsource TVec
8IirFrequencyTransformTIirFrequencyTransform

Returns: Double

Remarks:

The sos variable can be passed directly to the IirInitBQ digital filter initialization routine. Second order section form delivers substantially higher numerical stability and range than filtering with num/den form used by the IirInit function.