/// <summary> /// Creates a nth-order low-pass or high-pass Type I linear-phase FIR filter. /// </summary> /// <param name="freq">Corner frequency in radians.</param> /// <param name="order">Filter order.</param> /// <param name="windowType">Window type.</param> /// <param name="lowpass">True specifies low-pass, false specifies high-pass.</param> /// <returns></returns> public static FirFilter CreateFirFilter(double freq, int order, Windows.Type windowType, bool lowpass) { //Create window double[] window = Windows.CreateWindow(order, windowType); //Make sure the window is symmetric for (int i = 0; i < window.Length; i++) { Debug.Assert(window[i] == window[window.Length - 1 - i]); } //Create filter and return return CreateFirFilter(freq, order, window, lowpass); }
/// <summary> /// Creates a nth-order low-pass Type I linear-phase FIR filter. /// </summary> /// <param name="freq">Corner frequency in radians.</param> /// <param name="order">Filter order.</param> /// <param name="windowType">Window type.</param> /// <returns></returns> public static FirFilter CreateFirFilter(double freq, int order, Windows.Type windowType) { return CreateFirFilter(freq, order, windowType, true); }