02.10.2019 Views

UploadFile_6417

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

The Fast Fourier Transform 197<br />

N =2 ν , 0 ≤ ν ≤ 11. For these values of N, the radix-2 FFT algorithm is used.<br />

For all other values, a mixed-radix FFT algorithm is employed. This shows that<br />

the divide-and-combine strategy is very effective when N is highly composite.<br />

For example, the execution time is 0.16 sec for N = 2048, 2.48 sec for N = 2047,<br />

and 46.96 sec for N = 2039.<br />

□<br />

The MATLAB functions developed previously in this chapter should<br />

now be modified by substituting the fft function in place of the dft<br />

function. From the preceding example care must be taken to use a highly<br />

composite N. Agood practice is to choose N = 2 ν unless a specific<br />

situation demands otherwise.<br />

5.6.4 FAST CONVOLUTIONS<br />

The conv function in MATLAB is implemented using the filter function<br />

(which is written in C) and is very efficient for smaller values of N (< 50).<br />

For larger values of N it is possible to speed up the convolution using the<br />

FFT algorithm. This approach uses the circular convolution to implement<br />

the linear convolution, and the FFT to implement the circular convolution.<br />

The resulting algorithm is called a fast convolution algorithm. In<br />

addition, if we choose N =2 ν and implement the radix-2 FFT, then the<br />

algorithm is called a high-speed convolution. Let x 1 (n) beaN 1 -point sequence<br />

and x 2 (n)beaN 2 -point sequence; then for high-speed convolution<br />

N is chosen to be<br />

N =2 ⌈log 2 (N1+N2−1)⌉ (5.64)<br />

where ⌈x⌉ is the smallest integer greater than x (also called a ceiling<br />

function). The linear convolution x 1 (n) ∗ x 2 (n) can now be implemented<br />

by two N-point FFTs, one N-point IFFT, and one N-point dot-product.<br />

x 1 (n) ∗ x 2 (n) =IFFT [FFT [x 1 (n)] · FFT [x 2 (n)]] (5.65)<br />

For large values of N, (5.65) is faster than the time-domain convolution,<br />

as we see in the following example.<br />

□ EXAMPLE 5.23 To demonstrate the effectiveness of the high-speed convolution, let us compare<br />

the execution times of two approaches. Let x 1 (n) be an L-point uniformly<br />

distributed random number between [0, 1], and let x 2 (n)beanL-point Gaussian<br />

random sequence with mean 0 and variance 1. We will determine the average<br />

execution times for 1 ≤ L ≤ 150, in which the average is computed over the<br />

100 realizations of random sequences. (Please see the cautionary note given in<br />

Example 5.22.)<br />

Copyright 2010 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).<br />

Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!