Digital Filter Design

FIR "Windowing" Filters

  • In general, simplest low-pass filters: take a "window" of past samples, then "round off the corners" by multiplying by some symmetric transfer function

  • There are many window functions, each with their own slightly different properties as filters: simple things like triangular, plausible things like cosine, and weird things like Blackman, Hamming, Hanning

  • Note that windowing is also how we deal with edge effects of DFT: we make the signal have period equal to the DFT size by applying a window, but this also low-passes and changes the signal

FIR Chebyshev "Remez Exchange" Filters

  • There's a fancy mathematical trick for approximating a given desired filter shape with high accuracy for a given filter size

  • Involves treating filter coefficients as coefficients of a Chebyshev Polynomial, then adjusting the coefficients until maximum error is minimized

  • Probably not something you want to do yourself, but there are programs out there that will do it for you

IIR Filters

  • Can get much better response per unit computation by feeding the filter output back into the filter (?!)

  • In some applications, a 12th-order IIR filter can replace a 1024th-order FIR filter

  • Design of these filters really wants a full understanding of complex analysis, outside the scope of this course

  • Fortunately, many standard filter designs exist: Chebyschev, Bessel, Butterworth, Biquad, etc

  • Basic operation is the same as FIR, except that you have to remember some output:

    $$ y[i] = \frac{1}{k+m} \left(x[i-k \ldots i] \cdot a[k \ldots 0] + y[i-m-1 \ldots i-1] \cdot a(0 \ldots m)\right) $$

  • Always use floating point, as intermediate terms can get large / small

  • Really, just look up a filter design and implement it: probably too hard to "roll your own"

Last modified: Saturday, 11 April 2020, 2:57 AM