You are here: Symbol Reference > Dew.Signal Namespace > IIRFilters Class > IIRFilters Methods > ChebyshevIFilter Method > ChebyshevIFilter Method (integer, TSample, array of TSample, TFilterType, boolean, TMtx, TVec, TVec, TSample)
Dew DSP for .NET
Contents
PreviousUpNext
IIRFilters.ChebyshevIFilter Method (integer, TSample, array of TSample, TFilterType, boolean, TMtx, TVec, TVec, TSample)
C#
public double ChebyshevIFilter(int Order, double PassRipple, double[] CutoffFreq, TFilterType FilterType, bool 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.

Design an analog bandpass filter with transition band between 1..2 and 5..7 rad/sec and with at least 50dB attenuation in the stopband and. The passband should not have more then 0.2dB ripple. 

 

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);
    double[] WcArray= new double[2];

    //design analog filter
    int Order = IIRFilters.ChebyshevIIOrder(new double[4] { 1, 2, 5, 7 }, 0.2, 50, TFilterType.ftBandPass, ref WcArray, true);
    IIRFilters.ChebyshevIIFilter(Order, 50, WcArray, TFilterType.ftBandPass, true, num,den, TIirFrequencyTransform.ftStateSpaceAnalog);  //design analog protype
    FreqFr.Length = 1000;
    SignalUtils.LogRamp(FreqFr, -1, 1);
    SignalUtils.FrequencyResponseS(num, den, FreqFr, Response, 0);
    TeeChart.DrawIt(Response, "Frequency response", false);

    //Alternative: Design a digital filter with the passband between 0.2 and 0.5 Hz (FS =2)
    Order = IIRFilters.ChebyshevIOrder(new double[4] { 0.1, 0.2, 0.5, 0.6 }, 0.2, 50, TFilterType.ftBandPass, ref WcArray, false);
    IIRFilters.ChebyshevIFilter(Order, 0.2, WcArray, TFilterType.ftBandPass, false, num, den, TIirFrequencyTransform.ftStateSpaceAnalog);  //design analog protype
    FreqFr = MtxExpr.Ramp(Response.Length, 0, 1.0 / FreqFr.Length);
    TeeChart.DrawIt(Response, "Frequency response", false);
}
What do you think about this topic? Send feedback!
Copyright (c) 1999-2010 by Dew Research. All rights reserved.