Digital Signal Processing. The Scientist and Engineers Guide. Steven W. Smith
.pdfChapter 9- Applications of the DFT |
177 |
This leads us to the flat-top window, shown in Fig. 9-5d. In some applications the amplitude of a spectral peak must be measured very accurately. Since the DFT’s frequency spectrum is formed from samples, there is nothing to guarantee that a sample will occur exactly at the top of a peak. More than likely, the nearest sample will be slightly off-center, giving a value lower than the true amplitude. The solution is to use a window that produces a spectral peak with a flat top, insuring that one or more of the samples will always have the correct peak value. As shown in Fig. 9-5d, the penalty for this is a very broad main lobe, resulting in poor frequency resolution.
As it turns out, the shape we want for a flat-top window is exactly the same shape as the filter kernel of a low-pass filter. We will discuss the theoretical reasons for this in later chapters; for now, here is a cookbook description of how the technique is used. Chapter 16 discusses a low-pass filter called the windowed-sinc. Equation 16-4 describes how to generate the filter kernel (which we want to use as a window), and Fig. 16-4a illustrates the typical shape of the curve. To use this equation, you will need to know the value of two parameters: M and fc . These are found from the relations: M ' N & 2 , and fc ' s /N , where N is the length of the DFT being used, and s is the number of samples you want on the flat portion of the peak (usually between 3 and 5). Table 16-1 shows a program for calculating the filter kernel (our window), including two subtle features: the normalization constant, K, and how to avoid a divide-by-zero error on the center sample. When using this method, remember that a DC value of one in the time domain will produce a peak of amplitude one in the frequency domain. However, a sinusoid of amplitude one in the time domain will only produce a spectral peak of amplitude one-half. (This is discussed in the last chapter: Synthesis, Calculating the Inverse DFT).
Frequency Response of Systems
Systems are analyzed in the time domain by using convolution. A similar analysis can be done in the frequency domain. Using the Fourier transform, every input signal can be represented as a group of cosine waves, each with a specified amplitude and phase shift. Likewise, the DFT can be used to represent every output signal in a similar form. This means that any linear system can be completely described by how it changes the amplitude and phase of cosine waves passing through it. This information is called the system's frequency response. Since both the impulse response and the frequency response contain complete information about the system, there must be a one- to-one correspondence between the two. Given one, you can calculate the other. The relationship between the impulse response and the frequency response is one of the foundations of signal processing: A system's frequency response is the Fourier Transform of its impulse response. Figure 9-6 illustrates these relationships.
Keeping with standard DSP notation, impulse responses use lower case variables, while the corresponding frequency responses are upper case. Since h[ ] is the common symbol for the impulse response, H[ ] is used for the frequency response. Systems are described in the time domain by convolution, that is:
178 |
The Scientist and Engineer's Guide to Digital Signal Processing |
x[n] t h[n] ' y[n]. In the frequency domain, the input spectrum is multiplied by the frequency response, resulting in the output spectrum. As an equation: X [f ] × H [ f ] ' Y[ f ] . That is, convolution in the time domain corresponds to multiplication in the frequency domain.
Figure 9-7 shows an example of using the DFT to convert a system's impulse response into its frequency response. Figure (a) is the impulse response of the system. Looking at this curve isn't going to give you the slightest idea what the system does. Taking a 64 point DFT of this impulse response produces the frequency response of the system, shown in (b). Now the function of this system becomes obvious, it passes frequencies between 0.2 and 0.3, and rejects all others. It is a band-pass filter. The phase of the frequency response could also be examined; however, it is more difficult to interpret and less interesting. It will be discussed in upcoming chapters.
Figure (b) is very jagged due to the low number of samples defining the curve. This situation can be improved by padding the impulse response with zeros before taking the DFT. For example, adding zeros to make the impulse response 512 samples long, as shown in (c), results in the higher resolution frequency response shown in (d).
How much resolution can you obtain in the frequency response? The answer is: infinitely high, if you are willing to pad the impulse response with an infinite number of zeros. In other words, there is nothing limiting the frequency resolution except the length of the DFT. This leads to a very important concept. Even though the impulse response is a discrete signal, the corresponding frequency response is continuous. An N point DFT of the impulse response provides N/2 % 1 samples of this continuous curve. If you make the DFT longer, the resolution improves, and you obtain a better idea of
x[n] 
h[n]
y[n]
TIME |
IDFT |
IDFT |
IDFT |
|
DOMAIN |
||||
|
|
|
||
FREQUENCY |
DFT |
DFT |
DFT |
|
DOMAIN |
|
|
|
X[f] 
H[f]
Y[f]
FIGURE 9-6
Comparing system operation in the time and frequency domains. In the time domain, an input signal is convolved with an impulse response, resulting in the output signal, that is, x[n] t h[n] ' y[n]. In the frequency domain, an input spectrum is multiplied by a frequency response, resulting in the output spectrum, that is, X[f] × H[f] ' Y[f]. The DFT and the Inverse DFT relate the signals in the two domain.
Chapter 9- Applications of the DFT |
179 |
|
Time Domain |
Frequency Domain |
|
|
0.4 |
|
|
|
|
|
|
|
|
|
2.0 |
|
|
|
|
|
|
|
a. Impulse response |
|
|
|
|
|
|
|
ab. ImpulseFrequencyresponse |
|
|
|
|||
Amplitude |
0.2 |
|
|
|
|
|
|
|
|
Amplitude |
1.5 |
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
1.0 |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
-0.2 |
|
|
|
|
|
|
|
|
|
0.5 |
|
|
|
|
|
|
-0.4 |
|
|
|
|
|
|
|
|
|
0.0 |
|
|
|
|
|
|
0 |
8 |
16 |
24 |
32 |
40 |
48 |
56 |
643 |
|
0 |
0.1 |
0.2 |
0.3 |
0.4 |
0.5 |
|
|
|
|
Sample number |
|
|
|
|
|
|
Frequency |
|
|
|||
|
0.4 |
|
|
|
|
|
|
|
|
|
2.0 |
|
|
|
|
|
|
|
|
|
ac. Impulse response |
padded with zeros |
|
|
|
|
|
d. Frequency response (high resolution) |
||
0.2 |
|
|
|
|
|
1.5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
Amplitude |
0 |
Amplitude |
1.0 |
|
|
-0.2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0.5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-0.4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0.0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
64 |
128 |
192 |
256 |
320 |
384 |
448 |
5112 |
0 |
0.1 |
0.2 |
0.3 |
0.4 |
0.5 |
|||||||||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
Sample number |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Frequency |
|
|
|
|
|
|
|
|
|
||||||||||||||
FIGURE 9-7
Finding the frequency response from the impulse response. By using the DFT, a system's impulse response, (a), can be transformed into the system's frequency response, (b). By padding the impulse response with zeros (c), higher resolution can be obtained in the frequency response, (d). Only the magnitude of the frequency response is shown in this example; discussion of the phase is postponed until the next chapter.
what the continuous curve looks like. Remember what the frequency response represents: amplitude and phase changes experienced by cosine waves as they pass through the system. Since the input signal can contain any frequency between 0 and 0.5, the system's frequency response must be a continuous curve over this range.
This can be better understood by bringing in another member of the Fourier transform family, the Discrete Time Fourier Transform (DTFT). Consider an N sample signal being run through an N point DFT, producing an N/2 % 1 sample frequency domain. Remember from the last chapter that the DFT considers the time domain signal to be infinitely long and periodic. That is, the N points are repeated over and over from negative to positive infinity. Now consider what happens when we start to pad the time domain signal with an ever increasing number of zeros, to obtain a finer and finer sampling in the frequency domain. Adding zeros makes the period of the time domain longer, while simultaneously making the frequency domain samples closer together.
180 |
The Scientist and Engineer's Guide to Digital Signal Processing |
Now we will take this to the extreme, by adding an infinite number of zeros to the time domain signal. This produces a different situation in two respects. First, the time domain signal now has an infinitely long period. In other words, it has turned into an aperiodic signal. Second, the frequency domain has achieved an infinitesimally small spacing between samples. That is, it has become a continuous signal. This is the DTFT, the procedure that changes a discrete aperiodic signal in the time domain into a frequency domain that is a continuous curve. In mathematical terms, a system's frequency response is found by taking the DTFT of its impulse response. Since this cannot be done in a computer, the DFT is used to calculate a sampling of the true frequency response. This is the difference between what you do in a computer (the DFT) and what you do with mathematical equations (the DTFT).
Convolution via the Frequency Domain
Suppose that you despise convolution. What are you going to do if given an input signal and impulse response, and need to find the resulting output signal? Figure 9-8 provides an answer: transform the two signals into the frequency domain, multiply them, and then transform the result back into the time domain. This replaces one convolution with two DFTs, a multiplication, and an Inverse DFT. Even though the intermediate steps are very different, the output is identical to the standard convolution algorithm.
Does anyone hate convolution enough to go to this trouble? The answer is yes. Convolution is avoided for two reasons. First, convolution is mathematically difficult to deal with. For instance, suppose you are given a system's impulse response, and its output signal. How do you calculate what the input signal is? This is called deconvolution, and is virtually impossible to understand in the time domain. However, deconvolution can be carried out in the frequency domain as a simple division, the inverse operation of multiplication. The frequency domain becomes attractive whenever the complexity of the Fourier Transform is less than the complexity of the convolution. This isn't a matter of which you like better; it is a matter of which you hate less.
The second reason for avoiding convolution is computation speed. For example, suppose you design a digital filter with a kernel (impulse response) containing 512 samples. Using a 200 MHz personal computer with floating point numbers, each sample in the output signal requires about one millisecond to calculate, using the standard convolution algorithm. In other words, the throughput of the system is only about 1,000 samples per second. This is 40 times too slow for high-fidelity audio, and 10,000 times too slow for television quality video!
The standard convolution algorithm is slow because of the large number of multiplications and additions that must be calculated. Unfortunately, simply bringing the problem into the frequency domain via the DFT doesn't help at all. Just as many calculations are required to calculate the DFTs, as are required to directly calculate the convolution. A breakthrough was made in the problem in the early 1960s when the Fast Fourier Transform (FFT) was developed.
|
|
|
|
|
|
Chapter 9- Applications of the DFT |
|
|
|
|
|
|
183 |
|||||
|
2 |
|
|
|
|
|
2 |
|
|
|
|
|
20 |
|
|
|
|
|
|
|
a. Input signal |
|
|
|
|
b. Impulse response |
|
|
15 |
c. Convolution of (a) and (b) |
|
||||||
Amplitude |
1 |
|
|
|
|
Amplitude |
1 |
|
|
|
|
Amplitude |
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
= |
5 |
|
|
|
|
|
|||
|
|
|
|
|
|
t 0 |
|
|
|
|
|
|
|
|
|
|||
|
0 |
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
-5 |
|
|
|
|
|
|
-1 |
|
|
|
|
|
-1 |
|
|
|
|
|
-10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-15 |
|
|
|
|
|
|
-2 |
|
|
|
|
|
-2 |
|
|
|
|
|
-20 |
|
|
|
|
|
|
0 |
64 |
128 |
192 |
2565 |
|
0 |
64 |
128 |
192 |
2565 |
|
0 |
64 |
128 |
192 |
2565 |
305 |
Sample number |
Sample number |
Sample number |
|
20 |
|
|
|
|
15 |
d. Overlap of adjecent periods |
|
|
|
10 |
|
|
|
Amplitude |
5 |
|
|
|
0 |
|
|
|
|
-5 |
|
|
|
|
|
-10 |
|
|
|
|
-15 |
|
|
|
|
-20 |
|
|
|
|
0 |
256 |
512 |
7678 |
Sample number
|
20 |
|
|
|
|
|
15 |
e. Circular convolution |
|
||
|
10 |
|
|
|
|
Amplitude |
5 |
|
|
|
|
0 |
|
|
|
|
|
-5 |
overlap |
|
|
||
|
-10 |
|
|
||
|
|
|
|
|
|
|
-15 |
|
|
|
|
|
-20 |
|
|
|
|
|
0 |
64 |
128 |
192 |
2556 |
Sample number
FIGURE 9-9
Circular convolution. A 256 sample signal, (a), convolved with a 51 sample impulse response, (b), results in a 306 sample signal, (c). If this convolution is performed in the frequency domain using 256 point DFTs, the 306 points in the correct convolution cannot fit into the 256 samples provided. As shown in (d), samples 256 through 305 of the output signal are pushed into the next period to the right, where they add to the beginning of the next period's signal. Figure (e) is a single period of the resulting signal.
Now consider the more general case in Fig. 9-9. The input signal, (a), is 256 points long, while the impulse response, (b), contains 51 nonzero points. This makes the convolution of the two signals 306 samples long, as shown in (c). The problem is, if we use frequency domain multiplication to perform the convolution, there are only 256 samples allowed in the output signal. In other words, 256 point DFTs are used to move (a) and (b) into the frequency
184 |
The Scientist and Engineer's Guide to Digital Signal Processing |
domain. After the multiplication, a 256 point Inverse DFT is used to find the output signal. How do you squeeze 306 values of the correct signal into the 256 points provided by the frequency domain algorithm? The answer is, you can't! The 256 points end up being a distorted version of the correct signal. This process is called circular convolution. It is important because you want to avoid it.
To understand circular convolution, remember that an N point DFT views the time domain as being an infinitely long periodic signal, with N samples per period. Figure (d) shows three periods of how the DFT views the output signal in this example. Since N ' 256 , each period consists of 256 points: 0-255, 256-511, and 512-767. Frequency domain convolution tries to place the 306 point correct output signal, shown in (c), into each of these 256 point periods. This results in 49 of the samples being pushed into the neighboring period to the right, where they overlap with the samples that are legitimately there. These overlapping sections add, resulting in each of the periods appearing as shown in (e), the circular convolution.
Once the nature of circular convolution is understood, it is quite easy to avoid. Simply pad each of the signals being convolved with enough zerosto allow the output signal room to handle the N% M& 1 points in the correct convolution. For example, the signals in (a) and (b) could be padded with zeros to make them 512 points long, allowing the use of 512 point DFTs. After the frequency domain convolution, the output signal would consist of 306 nonzero samples, plus 206 samples with a value of zero. Chapter 18 explains this procedure in detail.
Why is it called circular convolution? Look back at Fig. 9-9d and examine the center period, samples 256 to 511. Since all of the periods are the same, the portion of the signal that flows out of this period to the right, is the same that flows into this period from the left. If you only consider a single period, such as in (e), it appears that the right side of the signal is somehow connected to the left side. Imagine a snake biting its own tail; sample 255 is located next to sample 0, just as sample 100 is located next to sample 101. When a portion of the signal exits to the right, it magically reappears on the left. In other words, the N point time domain behaves as if it were circular.
In the last chapter we posed the question: does it really matter if the DFT's time domain is viewed as being N points, rather than an infinitely long periodic signal of period N? Circular convolution is an example where it does matter. If the time domain signal is understood to be periodic, the distortion encountered in circular convolution can be simply explained as the signal expanding from one period to the next. In comparison, a rather bizarre conclusion is reached if only N points of the time domain are considered. That is, frequency domain convolution acts as if the time domain is somehow wrapping into a circular ring with sample 0 being positioned next to sample N-1.




































































































































































