DewDSPMasterNET
ChebyshevIIOrder Routine
Summary
Estimate the order of a Chebyshev type II IIR filter.

Unit
IIRFilters

Declaration
Function ChebyshevIIOrder(const BEdges: array of TSample; PassRipple, StopRipple: TSample; FilterType: TFilterType; var CutoffFreq: array of TSample; Analog: boolean = False): integer;

Description
Returns the order of the Chebyshev type II filter. Bedg array must contain the band edges of the transition region(s) sorted in ascending order. PassRipple defines the ripple of the passband and StopRipple defines the ripple of the stopband. The length of the CutoffFreq array must be equal to one half of the length of the BEdg array and must match the specified FilterType. The routine returns the estimated order as a result and fill's the CutoffFreq array. This array can then be passed to the ChebyshevIIFilter routine.
Categories
IIR filter order estimation
 See Also 
ChebyshevIIFilter 

Example 1

Design an analog bandpass filter with transition band between 1..3 and 6..9 rad/sec and with at least 50dB attenuation in the stopband and. The passband should not have more then 0.2dB ripple.
uses MtxExpr, Math387, MtxVec, SignalUtils, MtxVecTee, MtxVecEdit, IirFilters, LinearSystems; procedure TForm1.Button1Click(Sender: TObject); var z,p, num,den, FreqFr,Response: Vector; Order: integer; k,Bw,Wc: TSample; WcArray: TSampleArray; //modified 3dB frequency begin SetLength(WcArray,2); Order := ChebyshevIIOrder([1,3,6,9],0.2,50,ftBandPass,WcArray,True); ChebyshevIIAnalog(Order,50,z,p,k); //design analog protype Wc := Sqrt(WcArray[0]*WcArray[1]); //modified 3dB frequency Bw := WcArray[1]-WcArray[0]; LowpassToBandpass(z,p,k,Wc,Bw); //frequency transformation in s-domain ZeroPoleToTransferFun(num,den,z,p,k); 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 DrawIt(Response); //Y axis linear, X axis logarithmic; end;
#include "MtxVecCPP.h" //MtxVecCPP.cpp must be included in the project #include "MtxVecEdit.hpp" #include "MtxVecTee.hpp" #include "SignalUtils.hpp" #include "IirFilters.hpp" #include "LinearSystems.hpp" void __fastcall TForm1::BitBtn1Click(TObject *Sender) { Vector z,p, num,den, FreqFr, Response, WcArray; int Order; double k,Wc,Bw; WcArray->Size(2); Order = ChebyshevIIOrder(OPENARRAY(double,(1,3,6,9)),0.2,50,ftBandPass,WcArray->PValues1D(0),WcArray->Length-1,true); ChebyshevIIAnalog(Order,50,z,p,k); //design analog protype Wc = Sqrt(WcArray[0]*WcArray[1]); //modified 3dB frequency Bw = WcArray[1]-WcArray[0]; LowpassToBandpass(z,p,k,Wc,Bw); //frequency transformation in s-domain ZeroPoleToTransferFun(num,den,z,p,k); 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 DrawIt(Response); //Y axis linear, X axis logarithmic; }
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); Vector FreqFr = new Vector(0); double Wc,k; double[] WcArray = new double[2]; int Order; //design a fifth order filter. Order = IIRFilters.ChebyshevIIOrder(new double[4] { 1, 3, 6, 9 }, 0.2, 50, TFilterType.ftBandPass, ref WcArray, true); //design analog protype IIRFilters.ChebyshevIIAnalog(Order, 50, z, p, out k); //design analog protype Wc = Math.Sqrt(WcArray[0] * WcArray[1]); //modified 3dB frequency double Bw = WcArray[1] - WcArray[0]; LinearSystems.LowpassToBandpass(z, p, ref k, Wc, Bw); //frequency transformation in s-domain LinearSystems.ZeroPoleToTransferFun(num, den, z, p, k); FreqFr.Length = 1000; SignalUtils.LogRamp(FreqFr, -1, 1); SignalUtils.FrequencyResponseS(num, den, FreqFr, Response, 0); TeeChart.DrawIt(Response, "Frequency response", false); }

Copyright 2008 Dew Research
http://www.dewresearch.com