Filter Tutorial
Filter Tutorial
There are two main kinds of filter, analog and digital. They are quite different in their physical makeup and in how they work. An analog filter uses analog electronic circuits made up from components such as resistors, capacitors and op amps to produce the required filtering effect. Such filter circuits are widely used in such applications as noise reduction, video signal enhancement, graphic equalisers in hi-fi systems, and many other areas. There are well-established standard techniques for designing an analog filter circuit for a given requirement. At all stages, the signal being filtered is an electrical voltage or current which is the direct analogue of the physical quantity (e.g. a sound or video signal or transducer output) involved. A digital filter uses a digital processor to perform numerical calculations on sampled values of the signal. The processor may be a general-purpose computer such as a PC, or a specialised DSP (Digital Signal Processor) chip. The analog input signal must first be sampled and digitised using an ADC (analog to digital converter). The resulting binary numbers, representing successive sampled values of the input signal, are transferred to the processor, which carries out numerical calculations on them. These calculations typically involve multiplying the input values by constants and adding the products together. If necessary, the results of these calculations, which now represent sampled values of the filtered signal, are output through a DAC (digital to analog converter) to convert the signal back to analog form. Note that in a digital filter, the signal is represented by a sequence of numbers, rather than a voltage or current. The following diagram shows the basic setup of such a system.
2.
3.
4.
5.
6.
V = x(t )
where t is time. This signal is sampled at time intervals h (the sampling interval). The sampled value at time t = ih is
xi = x (ih)
Thus the digital values transferred from the ADC to the processor can be represented by the sequence
x 0 , x 1 , x 2 , x 3 , ...
corresponding to the values of the signal waveform at
At time t = nh (where n is some positive integer), the values available to the processor, stored in memory, are
x 0 , x 1 , x 2 , x 3 , ... x n
Note that the sampled values xn+1, xn+2 etc. are not available, as they haven't happened yet! The digital output from the processor to the DAC consists of the sequence of values
y 0 , y 1 , y 2 , y 3 , ... y n
In general, the value of yn is calculated from the values x0, x1, x2, x3, ... , xn. The way in which the y's are calculated from the x's determines the filtering action of the digital filter. In the next section, we will look at some examples of simple digital filters.
y n = xn
Each output value yn is exactly the same as the corresponding input value xn:
y0 = x0 y1 = x1 y 2 = x2 ... etc
This is a trivial case in which the filter has no effect on the signal.
y n = Kx n
where K = constant. This simply applies a gain factor K to each input value. K > 1 makes the filter an amplifier, while 0 < K < 1 makes it an attenuator. K < 0 corresponds to an inverting amplifier. Example (1) above is simply the special case where K = 1.
y n = x n-1
The output value at time t = nh is simply the input at time t = (n-1)h, i.e. the signal is delayed by time h:
y 0 = x -1 y 1 = x0 y 2 = x1 y 3 = x2 ... etc
Note that as sampling is assumed to commence at t = 0, the input value x-1 at t = -h is undefined. It is usual to take this (and any other values of x prior to t = 0) as zero.
y n = x n - x n-1
The output value at t = nh is equal to the difference between the current input xn and the previous input xn-1:
y 0 = x0 y 1 = x1 y 2 = x2 y 3 = x3 ... etc
- x -1 - x0 - x1 - x2
i.e. the output is the change in the input over the most recent sampling interval h. The effect of this filter is similar to that of an analog differentiator circuit.
yn =
x n + x n-1 2
The output is the average (arithmetic mean) of the current and previous input:
x 0 + x -1 2 x + x0 y1 = 1 2 x 2 + x1 y2 = 2 x3 + x2 y3 = 2 ... etc y0 =
This is a simple type of low pass filter as it tends to smooth out high-frequency variations in a signal. (We will look at more effective low pass filter designs later).
yn =
x n + x n-1 + x n 2 3
This is similar to the previous example, with the average being taken of the current and two previous inputs:
y0 = y1 y2 y3
x 0 + x -1 3 x + x0 = 1 3 x + x1 = 2 3 x3 + x2 = 3
+ x -2 + x -1 + x0 + x1
yn =
x n - x n-2 2
This is similar in its effect to example (4). The output is equal to half the change in the input signal over the previous two sampling intervals:
The constants a0, a1, a2, ... appearing in these expressions are called the filter coefficients. It is the values of these coefficients that determine the characteristics of a particular filter. The following table gives the values of the coefficients of each of the filters given as examples above.
Example 1 2 3 4 5 6 7
Order 0 0 1 1 1 2 2
a0 1 K 0 1
1
a1 1 -1
1
a2 1
/2 /3 /2
/2 /3
/3
-1/2
SAQ 1
For each of the following filters, state the order of the filter and identify the values of its coefficients:
Note Some people prefer an alternative terminology in which a non-recursive filter is known as an FIR (or Finite Impulse Response) filter, and a recursive filter as an IIR (or Infinite Impulse Response) filter. These terms refer to the differing "impulse responses" of the two types of filter. The impulse response of a digital filter is the output sequence from the filter when a unit impulse is applied at its input. (A unit impulse is a very simple input sequence consisting of a single value of 1 at time t = 0, followed by zeros at all subsequent sampling instants). An FIR filter is one whose impulse response is of finite duration. An IIR filter is one whose impulse response theoretically continues for ever because the recursive (previous output) terms feed back energy into the filter input and keep it going. The term IIR is not very accurate because the actual impulse responses of nearly all IIR filters reduce virtually to zero in a finite time. Nevertheless, these two terms are widely used.
y n = x n + y n-1
In other words, this filter determines the current output (yn) by adding the current input (xn) to the previous output (yn-1):
y 0 = x0 y 1 = x1 y 2 = x2 y 3 = x3 ... etc
+ y -1 + y0 + y1 + y2
Note that y-1 (like x-1) is undefined, and is usually taken to be zero. Let us consider the effect of this filter in more detail. If in each of the above expressions we substitute for yn-1 the value given by the previous expression, we get the following:
y0 = x0 y 1 = x1 y 2 = x2 y 3 = x3 ... etc
+ y -1 = x 0 + y 0 = x1 + x 0 + y 1 = x 2 + x1 + x 0 + y 2 = x 3 + x 2 + x1 + x 0
Thus we can see that yn, the output at t = nh, is equal to the sum of the current input xn and all the previous inputs. This filter therefore sums or integrates the input values, and so has a similar effect to an analog integrator circuit.
This example demonstrates an important and useful feature of recursive filters: the economy with which the output values are calculated, as compared with the equivalent non-recursive filter. In this example, each output is determined simply by adding two numbers together. For instance, to calculate the output at time t = 10h, the recursive filter uses the expression
y 10 = x 10 + y 9
To achieve the same effect with a non-recursive filter (i.e. without using previous output values stored in memory) would entail using the expression
y 10 = x 10 + x 9 + x 8 + x 7 + x 6 + x 5 + x 4 + x 3 + x 2 + x 1 + x 0
This would necessitate many more addition operations as well as the storage of many more values in memory.
The order of a recursive filter is the largest number of previous input or output values required to compute the current output.
This definition can be regarded as being quite general: it applies both to FIR and IIR filters. For example, the recursive filter discussed above, given by the expression
y n = x n + y n-1
is classed as being of first order, because it uses one previous output value (yn-1), even though no previous inputs are required. In practice, recursive filters usually require the same number of previous inputs and outputs. Thus, a first-order recursive filter generally requires one previous input (xn-1) and one previous output (yn-1), while a second-order recursive filter makes use of two previous inputs (xn-1 and xn-2) and two previous outputs (yn-1 and yn-2); and so on, for higher orders. Note that a recursive (IIR) filter must, by definition, be of at least first order; a zero-order recursive filter is an impossibility. (Why?)
SAQ 2
State the order of each of the following recursive filters: (a) y n = 2x n - x n-1 + y n-1 (b) y n = x n-1 - x n-3 - 2y n-1 (c) y n = x n + 2x n-1 + x n-2 - 2y n-1 + y n-2
yn =
(a 0 x n + a 1 x n-1 - b 1 y n-1 ) b0
Note the minus sign in front of the "recursive" term b1yn-1, and the factor (1/b0) applied to all the coefficients. The reason for expressing the filter in this way is that it allows us to rewrite the expression in the following symmetrical form:
b 0 y n + b 1 y n-1 = a 0 x n + a 1 x n-1
In the case of a second-order filter, the general form is
yn =
a 0 xn + a1 x n 1 + a 2 x n 2 b1 y n 1 b2 y n 2 b0
SAQ 3 Identify the values of the filter coefficients for the first-order recursive filter
y n = x n + y n-1
discussed earlier. Repeat this for each of the filters in SAQ 2.
10
In the last section, we used two different ways of expressing the action of a digital filter: a form giving the output yn directly, and a "symmetrical" form with all the output terms on one side and all the input terms on the other. In this section, we introduce what is called the transfer function of a digital filter. This is obtained from the symmetrical form of the filter expression, and it allows us to describe a filter by means of a convenient, compact expression. We can also use the transfer function of a filter to work out its frequency response. First of all, we must introduce the delay operator, denoted by the symbol z-1. When applied to a sequence of digital values, this operator gives the previous value in the sequence. It therefore in effect introduces a delay of one sampling interval. Applying the operator z-1 to an input value (say xn) gives the previous input (xn-1):
z -1 x n = x n-1
Suppose we have an input sequence
x0 x1 x2 x3 x4
Then
= = = = =
5 -2 0 7 10
z -1 x 1 = x 0 = 5 z -1 x 2 = x 1 = - 2 z -1 x 3 = x 2 = 0
and so on. Note that z-1 x0 would be x-1, which is unknown (and usually taken to be zero, as we have already seen). Similarly, applying the z-1 operator to an output gives the previous output:
z -1 y n = y n-1
Applying the delay operator z-1 twice produces a delay of two sampling intervals:
z -1 (z -1 x n ) = z -1 x n-1 = x n-2
We adopt the (fairly logical) convention
z -1 z -1 = z -2
11
z -2 x n = x n-2
This notation can be extended to delays of three or more sampling intervals, the appropriate power of z-1 being used. Let us now use this notation in the description of a recursive digital filter. Consider, for example, a general second-order filter, given in its symmetrical form by the expression
(b 0 + b 1 z -1 + b 2 z -2 ) y n = (a 0 + a 1 z -1 + a 2 z -2 ) x n
Rearranging this to give a direct relationship between the output and input for the filter, we get
a + a 1 z -1 + a 2 z -2 yn = 0 xn b 0 + b 1 z -1 + b 2 z -2
This is the general form of the transfer function for a second-order recursive (IIR) filter. For a first-order filter, the terms in z-2 are omitted. For filters of order higher than 2, further terms involving higher powers of z-1 are added to both the numerator and denominator of the transfer function. A non-recursive (FIR) filter has a simpler transfer function which does not contain any denominator terms. The coefficient b0 is usually taken to be equal to 1, and all the other b coefficients are zero. The transfer function of a second-order FIR filter can therefore be expressed in the general form
yn = a 0 + a 1 z -1 + a 2 z -2 xn
12
yn =
can be written using the z-1 operator notation as
x n + x n-1 + x n-2 3
yn
x n + z -1 x n + z -2 x n (1 + z -1 + z -2 ) x n = = 3 3
yn 1 + z -1 + z -2 = xn 3
The general form of the transfer function for a first-order recursive filter can be written
yn a 0 + a 1 z -1 = xn b 0 + b 1 z -1
Consider, for example, the simple first-order recursive filter
y n = x n + y n-1
which we discussed earlier. To derive the transfer function for this filter, we rewrite the filter expression using the z-1 operator:
(1 - z -1 ) y n = x n
Rearranging gives the filter transfer function as
yn 1 = xn 1 - z -1
As a further example, consider the second-order IIR filter
(1 + 2z -1 - z -2 ) y n = (1 + 2z -1 + z -2 ) x n
and so the transfer function is
yn 1 + 2z -1 + z -2 = xn 1 + 2z -1 - z -2
13
x0 x1 x2 x3 x4 x5
= = = = = =
5 16 8 -3 0 2
14
SAQ 2
a) Order = 1 b) Order = 3 c) Order = 2
SAQ 4
a)
yn 2 - z -1 = xn 1 - z -1 yn z -1 - z -3 = xn 1 + 2z -1 yn 1 + 2z -1 + z -2 = xn 1 + 2z -1 - z -2
b)
c)
15