public static ComplexSignal[] Split(this ComplexSignal signal, IWindow window, int step) { int n = (int)System.Math.Floor(signal.Length / (double)step); ComplexSignal[] windows = new ComplexSignal[n]; for (int i = 0; i < n; i++) { windows[i] = window.Apply(signal, i * step); } return windows; }