Example #1
0
        private void testWindow(int length, IWindow window)
        {
            Complex[,] data = (Complex[, ]) this.data.Clone();
            ComplexSignal target = ComplexSignal.FromArray(data, 8000);

            Complex[,] samples = target.ToArray();

            Assert.IsTrue(data.IsEqual(samples));

            ComplexSignal[] windows = target.Split(window, 1);

            for (int i = 0; i < windows.Length; i++)
            {
                int min = System.Math.Min(i + length, samples.Length / 2);

                Complex[] segment = windows[i].ToArray().Reshape(1);
                Complex[] sub     = samples.Submatrix(i, min - 1, null).Reshape(1);

                var expected = new Complex[length * 2];
                for (int j = 0; j < sub.Length; j++)
                {
                    expected[j] = sub[j];
                }

                Assert.IsTrue(segment.IsEqual(expected));
            }
        }
Example #2
0
 /// <summary>
 ///   Splits a signal using a window
 /// </summary>
 ///
 /// <param name="signal">The signal to be splitted into windows.</param>
 /// <param name="step">The step size, in number of frames.</param>
 /// <param name="windowSize">The size of the window (in frames) when splitting the signal.</param>
 ///
 public static ComplexSignal[] Split(this ComplexSignal signal, int windowSize, int step)
 {
     return(signal.Split(RaisedCosineWindow.Rectangular(windowSize), step));
 }