written 5.7 years ago by |

An FIR filter (Finite Impulse Response) is a very general filter design that can be used for a huge variety of filtering goals. The basic idea of an FIR filter is very simple: multiply the present input value by a constant and add that result to the previous input value times a constant and add that result to the next earlier input value times a constant and so on. A designer using an FIR filter achieves a particular filtering goal simply by choosing the FIR filter's constants.

Mathematically, an FIR filter can be described as follows:

$y(t) = c0.x(t) + c1.x(t-1)+c2.x(t-2)+c3.x(t-3)+....$

t is the present time step. x is the input signal and y is the output signal. Each term is called a tap. So the above equation represents a 5-tap FIR filter.

Let's c some example of the versatility of an FIR filter. Assume we have a 5 tap FIR filter. For starters, to simply pass a signal though the filter unchanged, we set c0 to 1, and we set c1=c2=c3=c4=0. To amplify an input signal, we can set c0 to a number larger than 1, perhaps setting c0 to 2. To create a smoothing filter that outputs the average of the present value and the past four input values, we can simply set all the constants to equivalent values that add to 1, namely, c1=c2=c3=c4=0.2. The results of such a filter applied to a noisy input signal are shown.

To smooth and amplify, we can set all constants to equivalent values that add to something greater than 1, for example c1=c2=c3=c4=1, resulting in 5x amplification. To create a smoothing filter that only includes the previous two rather than four input values, we simply set c3 and c4 to 0. We see that we can build all the above different filters just by changing the constant values of an FIR filter.