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 b;
Vector c =
new Vector(0);
Vector num =
new Vector(0);
Vector den =
new Vector(0);
int n;
int i;
TIirState IirState =
new TIirState();
double state;
//Alternative 1: Tone with 5 periods
// b := Sin(Ramp(300, mvDouble, 0,2*Pi*5/300));
//Alternative 2: Gaussian noise
b =
MtxExpr.RandGauss(300,
false);
c.Copy(b);
n = 10;
state = 0;
int bLength = b.Length;
for (i = 0; i < (bLength / n); i ++)
//streaming test 1
{
b.SetSubRange(i*n,n);
SignalUtils.ExpAverageFilter(b,
ref state, 10);
//set to 10%
}
b.SetFullRange();
MtxVecTee.DrawIt(
new TVec[2] {c,b},
new string[2] {"Unfiltered","Filtered"},"Exponential averaging",
false);
b.Copy(c);
SignalUtils.ExpAverageFilter(10,num,den);
//set to 10x, (1/10 = 0.1, => 10%)
SignalUtils.IirInit(num,den,
ref IirState,
false);
bLength = b.Length;
for (i = 0; i < (bLength / n); i ++)
//streaming test 2
{
b.SetSubRange(i*n,n);
c.SetSubRange(i*n,n);
SignalUtils.IirFilter(b,c,
ref IirState);
}
SignalUtils.IirFree(
ref IirState);
b.SetFullRange();
c.SetFullRange();
MtxVecTee.DrawIt(
new TVec[2] { b, c },
new string[2] { "Unfiltered", "Filtered" }, "Exponential averaging with IirFilter",
false);
}