DewDSPMasterNET
ChebyshevIIFilter Routines
Summary
Design Chebyshev type II IIR filter.

Unit
IIRFilters

Declaration
Function ChebyshevIIFilter(Order: integer; StopRipple: TSample; const CutoffFreq: array of TSample; FilterType: TFilterType; Analog: boolean; num, den: TVec; IirFrequencyTransform: TIirFrequencyTransform = ftStateSpaceAnalog): TSample;

Description
The resulting transfer function is returned in the numerator/denumerator form with num and den.
Declaration
Function ChebyshevIIFilter(Order: integer; StopRipple: TSample; const CutoffFreq: array of TSample; FilterType: TFilterType; Analog: boolean; A: TMtx; B, C: TVec; out d: TSample): TSample;

Description
The resulting transfer function is returned in the state-space form with A,B,C,D variables.
Categories
IIR filter design routines
 See Also 
IirFilter 
ButterFilter 
ChebyshevIFilter 
EllipticFilter 
BesselFilter 
ChebyshevIIOrder 
ChebyshevIAnalog 
Bilinear 

Example 1

Design a discrete highpass filter with transition band between 10..12 Hz, if the sampling frequency is 30 Hz. The stopband should have more then 50 dB attenuation 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,1); Order := ChebyshevIIOrder([10/30,12/30],0.2,50,ftHighpass,WcArray,false); ChebyshevIIFilter(Order,50,WcArray,ftHighPass,false,num,den); FrequencyResponse(num,den,Response,64); FreqFr := Ramp(Response.Length,0,1.0/Response.Length); //X axis DrawIt(FreqFr,20*Log10(Abs(Response))); 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 TForm41::BitBtn1Click(TObject *Sender) { Vector z,p, num, den, FreqFr, Response, WcArray; int Order; double k,Wc,Bw; WcArray->Size(1); Order = ChebyshevIIOrder(OPENARRAY(double,(10.0/30,12.0/30)),0.2,50,ftHighPass,WcArray->PValues1D(0),WcArray->Length-1,false); ChebyshevIIFilter(Order,50,WcArray->PValues1D(0),WcArray->Length-1,ftHighPass,false,num,den); FrequencyResponse(num,den,Response,64); FreqFr = Ramp(Response->Length,0,1.0/Response->Length); //X axis DrawIt(FreqFr,20*Log10(Abs(Response)),"Frequency response",false); }
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.ChebyshevIIOrder(new double[2] { 10.0/30, 12.0/30 }, 0.2, 50, TFilterType.ftHighPass, ref WcArray, false); //design analog protype IIRFilters.ChebyshevIIFilter(Order, 50, WcArray, TFilterType.ftHighPass, false, num, den, TIirFrequencyTransform.ftStateSpaceAnalog); SignalUtils.FrequencyResponse(num, den, Response, 32, false, TSignalWindowType.wtRectangular, 0); Vector FreqFr = MtxExpr.Ramp(Response.Length, 0, 1.0 / Response.Length); //X axis TeeChart.DrawIt(FreqFr, Response, "Frequency response", false); }


Declaration
Function ChebyshevIIFilter(Order: integer; StopRipple: TSample; const CutoffFreq: array of TSample; FilterType: TFilterType; Analog: boolean; z, p: TVec; out k: TSample; IirFrequencyTransform: TIirFrequencyTransform = ftStateSpaceAnalog): TSample;

Description
Design Chebyshev type II 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. StopRipple defines the stopband ripple in dB. 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. The resulting transfer function is returned in the zero-pole form, with z,p,k variables.

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