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 h =
new Vector(0);
Vector response =
new Vector(0);
Vector x;
double FS = 2;
//sampling frequency
double Ripple = 0.001;
// 60 dB stopband and 0.001 ripple in the passband
// Lowpass design with transition band between 0.3 and 0.5 Hz.
SignalUtils.KaiserImpulse(h,
new double[2] {0.3,0.5} , Ripple, TFilterType.ftLowpass,1,FS,
true);
SignalUtils.FrequencyResponse(h,
null, response,8,
false, TSignalWindowType.wtRectangular,0);
x =
MtxExpr.Ramp(response.Length, TMtxFloatPrecision.mvDouble, 0,1.0/response.Length);
MtxVecTee.DrawIt(x, response,"Lowpass design with transition band between 0.3 and 0.5 Hz",
false);
// Highpass design with transition band between 0.3 and 0.5 Hz.
SignalUtils.KaiserImpulse(h,
new double[2] {0.3,0.5} , Ripple,TFilterType.ftHighpass,1,FS,
true);
SignalUtils.FrequencyResponse(h,
null, response,8,
false, TSignalWindowType.wtRectangular,0);
MtxVecTee.DrawIt(x, response,"Highpass design with transition band between 0.3 and 0.5 Hz",
false);
// Bandpass design with transition bands between 0.3..0.4 Hz and between 0.5...06 Hz.
SignalUtils.KaiserImpulse(h,
new double[4] {0.3,0.4,0.5,0.6} , Ripple,TFilterType.ftBandpass,1,FS,
true);
SignalUtils.FrequencyResponse(h,
null, response,8,
false,TSignalWindowType.wtRectangular,0);
x =
MtxExpr.Ramp(response.Length, TMtxFloatPrecision.mvDouble,0,1.0/response.Length);
MtxVecTee.DrawIt(x, response,"Bandpass with transition bands 0.3-0.4 Hz and 0.5-0.6 Hz.",
false);
// Bandstop design with transition bands between 0.3..0.4 Hz and between 0.5...06 Hz.
SignalUtils.KaiserImpulse(h,
new double[4] {0.3,0.4,0.5,0.6} , Ripple,TFilterType.ftBandstop,1,FS,
false);
SignalUtils.FrequencyResponse(h,
null, response,8,
false, TSignalWindowType.wtRectangular,0);
x =
MtxExpr.Ramp(response.Length, TMtxFloatPrecision.mvDouble,0,1.0/response.Length);
MtxVecTee.DrawIt(x, response,"Bandstop with transition bands 0.3-0.4 Hz and 0.5-0.6 Hz.",
false);
//Hilbert III with transition bands between 0.0-0.1 Hz and 0.9-1.0 Hz.
SignalUtils.KaiserImpulse(h,
new double[2] {0.9,1} , Ripple,TFilterType.ftHilbertIII,1,FS,
false);
SignalUtils.FrequencyResponse(h,
null, response,8,
false, TSignalWindowType.wtRectangular,0);
x =
MtxExpr.Ramp(response.Length, TMtxFloatPrecision.mvDouble,0,1.0/response.Length);
MtxVecTee.DrawIt(x, response,"Hilbert III with transition bands between 0.0-0.1 Hz and 0.9-1.0 Hz.",
false);
//Hilbert IV with transition band between 0.0-0.1 Hz.
SignalUtils.KaiserImpulse(h,
new double[2] {0.9,1} , Ripple,TFilterType.ftHilbertIV,1,FS,
false);
SignalUtils.FrequencyResponse(h,
null, response,8,
false, TSignalWindowType.wtRectangular,0);
x =
MtxExpr.Ramp(response.Length, TMtxFloatPrecision.mvDouble,0,1.0/response.Length);
MtxVecTee.DrawIt(x, response,"Hilbert IV with transition band between 0.0-0.1 Hz",
false);
//Differentiator III with transition band between 0.0-0.1 and 0.9-1.0 Hz.
SignalUtils.KaiserImpulse(h,
new double[2] {0.9,1} , Ripple,TFilterType.ftDifferentiatorIII,1,FS,
false);
SignalUtils.FrequencyResponse(h,
null, response,8,
false, TSignalWindowType.wtRectangular,0);
x =
MtxExpr.Ramp(response.Length, TMtxFloatPrecision.mvDouble,0,1.0/response.Length);
MtxVecTee.DrawIt(x, response,"Differentiator III with transitions between 0.0-0.1 and 0.9-1.0 Hz",
false);
//Differentiator IV with transition band between 0.0 and 0.1 Hz.
SignalUtils.KaiserImpulse(h,
new double[2] {0.9,1} , Ripple,TFilterType.ftDifferentiatorIV,1,FS,
false);
SignalUtils.FrequencyResponse(h,
null, response,8,
false, TSignalWindowType.wtRectangular,0);
x =
MtxExpr.Ramp(response.Length, TMtxFloatPrecision.mvDouble,0,1.0/response.Length);
MtxVecTee.DrawIt(x, response,"Differentiator IV with transitions between 0.0-0.1 Hz",
false);
}