Example #1
0
        /// <summary>
        /// Returns the list of IIR coefficients for a generic Butterworth filter.
        /// </summary>
        /// <param name="gain">Filter gain.</param>
        /// <param name="zeros">Filter zeros list.</param>
        /// <param name="poles">Filter poles list.</param>
        /// <param name="T">Sampling time (inverse of sampling frequency).</param>
        /// <returns>The list of IIR coefficients.</returns>
        private static (double[] numerator, double[] denominator) Coefficients(double gain, Complex[] zeros, Complex[] poles, double T)
        {
            (gain, zeros, poles) = BilinearTransform.Apply(gain, zeros, poles, T);

            double[] numerator   = Generate.Map(Helpers.MathFunctions.PolynomialCoefficients(zeros), num => (num * gain).Real);
            double[] denominator = Generate.Map(Helpers.MathFunctions.PolynomialCoefficients(poles), den => den.Real);

            return(numerator, denominator);
        }