public void TestCombine() { var t1 = new Transfer(); t1.B = new double[2] { 1, 1 }; t1.A = new double[3] { 1, 2, 1 }; var c = new TF.Combine(); c.TransferFunctions.Add(t1); c.TransferFunctions.Add(t1); c.Update(); Assert.AreEqual(new double[3] { 1, 2, 1 }, c.B); Assert.AreEqual(new double[5] { 1, 4, 6, 4, 1 }, c.A); }
public void TestFiltering() { var kernel = Utils.SincFilter(0.1f, 256, "blackman"); //Line l = new Line(Utils.Linspace(-2,2,kernel.Length), kernel); //var list = new List<Line>() { l }; //Plot.ShowPlot(list); Transfer tf = new Transfer(); tf.B = kernel; //tf.A = new double[1] { 1.0f }; double[] wave = new double[100000]; for (int i = 0; i < wave.Length; i++) { wave[i] = ((i % 2000) < 1000) ? 1 : 0; } var output = tf.Process(wave); Line l2 = new Line(Utils.Linspace(0, 2, wave.Length), wave); l2.LinePen = Pens.Blue; Line l3 = new Line(Utils.Linspace(0, 2, output.Length), output); l3.LinePen = Pens.Red; var list = new List<Line>() { l2, l3 }; Plot.Plot.ShowPlot(list); }