<< Chapter < Page Chapter >> Page >

A major application of the FFT is fast convolution or fast filtering where the DFT of the signal is multiplied term-by-term by the DFT ofthe impulse (helps to be doing finite impulse response (FIR) filtering) and the time-domain output is obtained by taking the inverse DFT ofthat product. What is less well-known is the DFT can be calculated by convolution. There are several different approaches to this,each with different application.

Rader's conversion of the dft into convolution

In this section a method quite different from the index mapping or polynomial evaluation is developed. Rather than dealingwith the DFT directly, it is converted into a cyclic convolution which must then be carried out by some efficient means. Those meanswill be covered later, but here the conversion will be explained. This method requires use of some number theory, which can befound in an accessible form in [link] or [link] and is easy enough to verify on one's own. A good general reference on numbertheory is [link] .

The DFT and cyclic convolution are defined by

C ( k ) = n = 0 N - 1 x ( n ) W n k
y ( k ) = n = 0 N - 1 x ( n ) h ( k - n )

For both, the indices are evaluated modulo N . In order to convert the DFT in [link] into the cyclic convolution of [link] , the n k product must be changed to the k - n difference. With real numbers, this can be done with logarithms, but it is more complicated when working in a finite set of integersmodulo N . From number theory [link] , [link] , [link] , [link] , it can be shown that if the modulus is a prime number, a base (called aprimitive root) exists such that a form of integer logarithm can be defined. This is stated in the following way. If N is a prime number, a number r called a primitive roots exists such that the integer equation

n = ( ( r m ) ) N

creates a unique, one-to-one map of the N - 1 member set m = { 0 , . . . , N - 2 } and the N - 1 member set n = { 1 , . . . , N - 1 } . This is because the multiplicative group of integers modulo a prime, p , is isomorphic to the additive group of integers modulo ( p - 1 ) and is illustrated for N = 5 below.

Table of Integers n = ( ( r m ) ) modulo 5, [* not defined]
r m= 0 1 2 3 4 5 6 7
1 1 1 1 1 1 1 1 1
2 1 2 4 3 1 2 4 3
3 1 3 4 2 1 3 4 2
4 1 4 1 4 1 4 1 4
5 * 0 0 0 * 0 0 0
6 1 1 1 1 1 1 1 1

[link] is an array of values of r m modulo N and it is easy to see that there are two primitiveroots, 2 and 3, and [link] defines a permutation of the integers n from the integers m (except for zero). [link] and a primitive root (usually chosen to be the smallest of those that exist) can be used to convert the DFT in [link] to the convolution in [link] . Since [link] cannot give a zero, a new length-(N-1) data sequence is defined from x ( n ) by removing the term with index zero. Let

n = r - m

and

k = r s

where the term with the negative exponent (the inverse) is defined as the integer that satisfies

( ( r - m r m ) ) N = 1

If N is a prime number, r - m always exists. For example, ( ( 2 - 1 ) ) 5 = 3 . [link] now becomes

C ( r s ) = m = 0 N - 2 x ( r - m ) W r - m r s + x ( 0 ) ,

for s = 0 , 1 , . . , N - 2 , and

C ( 0 ) = n = 0 N - 1 x ( n )

New functions are defined, which are simply a permutation in the order of the original functions, as

x ' ( m ) = x ( r - m ) , C ' ( s ) = C ( r s ) , W ' ( n ) = W r n

[link] then becomes

C ' ( s ) = m = 0 N - 2 x ' ( m ) W ' ( s - m ) + x ( 0 )

which is cyclic convolution of length N-1 (plus x ( 0 ) ) and is denoted as

C ' ( k ) = x ' ( k ) * W ' ( k ) + x ( 0 )

Applying this change of variables (use of logarithms) to the DFT can best be illustrated from the matrix formulation of the DFT. [link] is written for a length-5 DFT as

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Fast fourier transforms. OpenStax CNX. Nov 18, 2012 Download for free at http://cnx.org/content/col10550/1.22
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Fast fourier transforms' conversation and receive update notifications?

Ask