Description of FIR Filters
FIR filters are often used because they are simple and easy to understand [6]. Diagrams of the operation of an FIR filter are shown in Figure S1. An FIR filter works by multiplying an array of the most recent n data samples by an array of constants (called the tap coefficients), and summing the elements of the resulting array. (This operation is commonly called a dot product.) The filter then inputs another sample of data (which causes the oldest piece of data to be thrown away) and repeats the process.
Sidebar Fig - (a) FIR Filter operation in the time domain. Given
the h[k]'s, we are implementing an FIR filter as shown in the
diagram. (b) FIR Filter operation in the frequency domain. This
diagram shows the frequency response of the filter in part a.
Notice that the tap coefficients (h[k]'s) are simply the Fourier
series coefficients of the frequency response.
The interesting part of designing FIR filters is translating the desired frequency response into filter tap coefficients. As can be seen from Figure S1a, the equation for the output of an FIR filter in the time domain is:
(Eq. S1)
where is
the sampling frequency and k is the filter tap number. Since a
delay of
in
time corresponds to a multiplication by a complex exponential, the
corresponding equation in the frequency domain
(from Figure
S1b) is:
(Eq.
S2a)
where
(Eq. S2b)
is the frequency response of the FIR filter. It can be seen that
h[k], the filter tap coefficients, are precisely the Fourier series
coefficients of H(f) which is periodic with
period . Therefore the tap
coefficients may be calculated from the following equation:
(Eq. S3)
An additional option for improving the performance of the filters, is to apply a window function to the filter tap coefficients [2]. Coefficients affecting the higher frequencies are scaled down to reduce the ripple in the stop band. This can be done as follows:
(Eq.
S4)
where w[k] are the window scale factors, h[k] are the original tap
coefficients, and are
the windowed tap coefficients. The resulting coefficients may now
be used in place of the original ones. An unwanted side effect of
windowing, however, is the sacrifice of a sharp roll-off at the
cutoff frequency.
So, the design process is to pick the desired frequency response, H(f), and then calculate the tap coefficients (Eq. S3). The actual frequency response will only approximate the desired response because the number of filter taps is finite. Optionally, a window function may then be applied to the filter tap coefficients. The final step is to plot the actual frequency response, H(f), using Eq. S2b to make sure the resulting response is acceptable. Lousy responses can be tweaked using different windowing schemes.