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.
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 (c) 1999-2010 by Dew Research. All rights reserved.
|