You are here: Symbol Reference > Dew Namespace > Dew.Signal Namespace > Dew.Signal.Units Namespace > Classes > OptimalFir Class > OptimalFir Methods > RemezImpulse Method > OptimalFir.RemezImpulse Method ([In] TVec, [In] double[], TFilterType, double, double)
Dew Signal for .NET
ContentsIndexHome
PreviousUpNext
OptimalFir.RemezImpulse Method ([In] TVec, [In] double[], TFilterType, double, double)

Design an optimal equiripple FIR filter with Parks-McClellan algorithm.

Syntax
C#
Visual Basic
public static bool RemezImpulse([In] TVec H, [In] double[] W, TFilterType FilterType, double Gain, double FS);

Required length of the filter must be preset by setting H.Length. H vector holds the impulse response on exit.

KaiserImpulse, SavGolayImpulse, remez, FirImpulse

RemezImpulse examples. Comment out the filter setup that you need.

using Dew.Math; 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 H = new Vector(0); Vector Response = new Vector(0); //Assumed sampling frequency = 2 double FS = 2; double TransBW = 0.02; //transition bandwidth in Hz. double Ripple = 0.001; //Lowpass filter OptimalFir.RemezImpulse(H,new double[2] {0.3,0.3+TransBW},Ripple, TFilterType.ftLowpass,1,FS,false); //Highpass filter OptimalFir.RemezImpulse(H,new double[2] {0.3,0.3+TransBW},Ripple, TFilterType.ftHighpass,1,FS,false); //Bandpass filter OptimalFir.RemezImpulse(H,new double[4] {0.3,0.3+TransBW, 0.5-TransBW,0.5},Ripple, TFilterType.ftBandpass,1,FS,false); //Bandstop filter OptimalFir.RemezImpulse(H,new double[4] {0.3,0.3+TransBW, 0.5-TransBW,0.5},Ripple, TFilterType.ftBandstop, 1,FS,false); // Type III Hilbert transformer OptimalFir.RemezImpulse(H,new double[2] {TransBW,1-TransBW},Ripple, TFilterType.ftHilbertIII,1,FS,false); // Type IV Hilbert transformer OptimalFir.RemezImpulse(H,new double[2] {TransBW,1},Ripple, TFilterType.ftHilbertIV,1,FS,false); // Type III linear phase differentiator filter SignalUtils.KaiserImpulse(H,new double[2] {1-TransBW,1},Ripple, TFilterType.ftDifferentiatorIII,1,FS,false); H.Scale(FS); //Scale by sampling frequency // Type IV linear phase differentiator filter SignalUtils.KaiserImpulse( H,new double[2] {1-TransBW,1},Ripple, TFilterType.ftDifferentiatorIV,1,FS,false); H.Scale(FS); //Scale by sampling frequency // Type III differentiator filter OptimalFir.RemezImpulse(H,new double[2] {0,1-TransBW},Ripple, TFilterType.ftDifferentiatorIII,1,FS,false); H.Scale(FS); //Scale by sampling frequency // Type IV differentiator filter OptimalFir.RemezImpulse( H,new double[2] {0,1-TransBW},Ripple, TFilterType.ftDifferentiatorIV,1,FS,false); H.Scale(FS); //Scale by sampling frequency // Type III 2x differentiator filter (remez) OptimalFir.RemezImpulse(H,new double[2] {0,1-TransBW},Ripple, TFilterType.ftDoubleDifferentiatorIII,1,FS,false); H.Scale(FS*FS); //Scale by sampling frequency // Type IV 2x differentiator filter (remez) OptimalFir.RemezImpulse(H,new double[2] {0,1-TransBW},Ripple, TFilterType.ftDoubleDifferentiatorIV,1,FS,false); H.Scale(FS*FS); //Scale by sampling frequency // Type III integrator filter (remez).'; OptimalFir.RemezImpulse(H,new double[2] {TransBW,1-TransBW},Ripple, TFilterType.ftIntegratorIII,1,FS,false); H.Scale(1/FS); //Scale by sampling frequency // Type IV integrator filter (remez).'; OptimalFir.RemezImpulse(H,new double[2] {TransBW,1},Ripple, TFilterType.ftIntegratorIV,1,FS,false); H.Scale(1/FS); //Scale by sampling frequency // Type III 2x integrator filter (remez).'; OptimalFir.RemezImpulse(H,new double[2] {TransBW,1-TransBW},Ripple, TFilterType.ftDoubleIntegratorIII,1,FS,false); H.Scale(Math.Sqrt(1/FS)); //Scale by sampling frequency // Type IV 2x integrator filter (remez).'; OptimalFir.RemezImpulse(H,new double[2] {TransBW,1},Ripple, TFilterType.ftDoubleIntegratorIV,1,FS,false); H.Scale(Math.Sqrt(1/FS)); //Scale by sampling frequency SignalUtils.FrequencyResponse(H,null,Response,16,false,TSignalWindowType.wtRectangular,0); MtxVecTee.DrawIt(Response,"",false);
Copyright (c) 1999-2024 by Dew Research. All rights reserved.
What do you think about this topic? Send feedback!