|
Dew DSP for .NET
|
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.
IirFilter, ChebyshevIOrder, ButterFilter, ChebyshevIIFilter, EllipticFilter, BesselFilter
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.
|