297
CHAPTER
17
Custom Filters
Most filters have one of the four standard frequency responses: lowpass, highpass, bandpass
or bandreject.
This chapter presents a general method of designing digital filters with an
arbitrary
frequency response, tailored to the needs of your particular application.
DSP excels
in this area, solving problems that are far above the capabilities of analog electronics.
Two
important uses of custom filters are discussed in this chapter:
deconvolution
, a way of restoring
signals that have undergone an unwanted convolution, and
optimal filtering
, the problem of
separating signals with overlapping frequency spectra.
This is DSP at its best.
Arbitrary Frequency Response
The approach used to derive the windowedsinc filter in the last chapter can
also be used to design filters with virtually
any
frequency response.
The only
difference is how the desired response is moved from the frequency domain into
the time domain.
In the windowedsinc filter, the frequency response and the
filter kernel are both represented by
equations
, and the
conversion between
them is made by evaluating the
mathematics
of the Fourier transform.
In the
method presented here, both signals are represented by
arrays of numbers
, with
a
computer program
(the FFT) being used to find one from the other.
Figure 171 shows an example of how this works.
The frequency response
we want the filter to produce is shown in (a).
To say the least, it is very
irregular and would be virtually impossible to obtain with analog
electronics.
This ideal frequency response is
defined
by an array of
numbers that have been selected, not some mathematical equation. In this
example, there are 513 samples spread between 0 and 0.5 of the sampling
rate.
More points could be used to better represent the desired frequency
response, while a smaller number may be needed to reduce the computation
time during the filter design.
However, these concerns are usually small,
and 513 is a good length for most applications.
This preview has intentionally blurred sections. Sign up to view the full version.
View Full Document
The Scientist and Engineer's Guide to Digital Signal Processing
298
100 'CUSTOM FILTER DESIGN
110 'This program converts an aliased 1024 point impulse response into an M+1 point
120 'filter kernel (such as Fig. 171b being converted into Fig. 171c)
130 '
140 DIM REX[1023]
'REX[ ] holds the signal being converted
150 DIM T[1023]
'T[ ] is a temporary storage buffer
160 '
170 PI = 3.14159265
180 M% = 40
'Set filter kernel length (41 total points)
190 '
200 GOSUB XXXX
'Mythical subroutine to load REX[ ] with impulse response
210 '
220 FOR I% = 0 TO 1023
'Shift (rotate) the signal M/2 points to the right
230
INDEX% = I% + M%/2
240
IF INDEX% > 1023 THEN INDEX% = INDEX%1024
250
T[INDEX%] = REX[I%]
260 NEXT I%
270 '
280 FOR I% = 0 TO 1023
290
REX[I%] = T[I%]
300 NEXT I%
310 '
'Truncate and window the signal
320 FOR I% = 0 TO 1023
330
IF I% <= M% THEN REX[I%] = REX[I%] * (0.54  0.46 * COS(2*PI*I%/M%))
340
IF I% > M%
THEN REX[I%] = 0
350 NEXT I%
360 '
'The filter kernel now resides in REX[0] to REX[40]
370 END
TABLE 171
Besides the desired
magnitude
array shown in (a), there must be a
corresponding
phase
array of the same length.
In this example, the phase
of the desired frequency response is entirely
zero
(this array is not shown
in Fig. 171).
This is the end of the preview.
Sign up
to
access the rest of the document.
 Spring '11
 Staff
 Digital Signal Processing, Frequency, Signal Processing, deconvolution

Click to edit the document details