Course 07 - DFT (Contd), FFT
Course 07 - DFT (Contd), FFT
=
= =
1
0
1 ..., 1 , 0 , ] [ ] [
N
n
kn
N
N k W n x k X
= =
1
0
1 ..., 1 , 0 , ] [
1
] [
N
k
kn
N
N n W k X
N
n x
Since
Define
The above equation can be interpreted as a discrete convolution
of the finite-duration sequence x[n], 0 n N1, with the
sequence , which is the impulse response of the LTI
system.
Note that x[r] is nonzero only when 0 r <N. We can easily
verify that
1 =
kN
N
W
=
=
1
0
) (
1
0
] [
] [ ] [
N
r
r N k
N
N
r
kr
N
kN
N
W r x
W r x W k X
] [ ] [ ] [
) (
r n u W r x n y
r
r n k
N k
=
=
N n k
n y k X
=
= ] [ ] [
] [n u W
kn
N
=
z W
z H
k
N
k
] [n u W
kn
N
+
=
=
=
z z N k
z W
z W z W
z W
z W
z H
k
N
k
N
k
N
k
N
k
N
k
v
k
[n]
Since we only need to bring the system to a state from which
y
k
[n] can be computed, the complex multiplication by W
n
k
required to implement the zero of the system need not be
performed at every iteration, but only after the N-th iteration,
by the following difference equation:
It requires 2 real multiplications and 4 real additions to
compute v
k
[n] (that may be a complex sequence). The
multiplication by W
n
k
is performed only when n=N, which
requires 4 real multiplications and 4 real additions. Finally, a
total of 2N+4 real multiplications and 4N+4 real additions are
required.
. 0 ], 2 [ ] 1 [ ) / 2 cos( 2 ] [ ] [ N k n v n v N k n x n v
k k k
+ =
] 1 [ ] [ ] [ ] [ = = N v W N v N y k X
k
k
N k k
To compute all the X[k], k=0, , N1, we need 2N(N+2) real
multiplications and 4N(N+1) real additions, where the
number of multiplications are reduced by almost a half.
The Goertzel algorithm is usually used to compute X[k] for
which only a single k or a small number of k values are
needed.
Decimation-in-time FFT algorithm
Most conveniently illustrated by considering the special case of N
an integer power of 2, i.e, N=2
v
.
Since N is an even integer, we can consider computing X[k] by
separating x[n] into two (N/2)-point sequence consisting of the
even numbered point in x[n] and the odd-numbered points in x[n].
or, with the substitution of variable n=2r for n even and n=2r+1
for n odd
+ =
dd
] [ ] [ ] [
o n
nk
N
even n
nk
N
W n x W n x k X
=
+
=
+ + =
1 ) 2 / (
0
) 1 2 (
1 ) 2 / (
0
2
] 1 2 [ ] 2 [ ] [
N
r
k r
N
N
r
rk
N
W r x W r x k X
=
=
+ + =
1 ) 2 / (
0
2
1 ) 2 / (
0
2
) ]( 1 2 [ ) ]( 2 [
N
r
rk
N
k
N
N
r
rk
N
W r x W W r x
Since
That is, W
N
2
is the root of the equation W
N/2
=1
Consequently,
Both G[k] and H[k] can be computed by (N/2)-point DFT, where
G[k] is the (N/2)-point DFT of the even numbered points of the
original sequence and the second being the (N/2)-point DFT of
the odd-numbered point of the original sequence.
Although the index ranges over N values, k = 0, 1, , N-1, each
of the sums must be computed only for k between 0 and (N/2)-1,
since G[k] and H[k] are each periodic in k with period N/2.
2 /
) 2 / /( 2 ) / 2 ( 2 2
N
N j N j
N
W e e W = = =
1 ,..., 1 , 0 ], [ ] [ = + = N k k H W k G
k
N
=
=
+ + =
1 ) 2 / (
0
2 /
1 ) 2 / (
0
2 /
) ]( 1 2 [ ) ]( 2 [ ] [
N
r
rk
N
k
N
N
r
rk
N
W r x W W r x k X
Decomposing N-point DFT into two (N/2)-point DFT for the
case of N=8
We can further decompose the (N/2)-point DFT into two
(N/4)-point DFTs. For example, the upper half of the previous
diagram can be decomposed as
Hence, the 8-point DFT can be obtained by the following
diagram with four 2-point DFTs.
Flow graph of a 2-point DFT
Finally, each 2-point DFT can be implemented by the following
signal-flow graph, where no multiplications are needed.
Flow graph of complete decimation-in-time decomposition of an 8-point DFT.
In each stage of the decimation-in-time FFT algorithm, there
are a basic structure called the butterfly computation:
The butterfly computation can be simplified as follows:
Flow graph of a basic butterfly
computation in FFT.
Simplified butterfly computation.
] [ ] [ ] [
] [ ] [ ] [
1 1
1 1
q X W p X q X
q X W p X p X
m
r
N m m
m
r
N m m
=
+ =
Flow graph of 8-point FFT using the simplified butterfly computation
In the above, we have introduced the decimation-in-time
algorithm of FFT.
Here, we assume that N is the power of 2. For N=2
v
, it requires
v=log
2
N stages of computation.
The number of complex multiplications and additions required
was N+N+N = Nv = N log
2
N.
When N is not the power of 2, we can apply the same principle
that were applied in the power-of-2 case when N is a composite
integer. For example, if N=RQ, it is possible to express an N-
point DFT as either the sum of R Q-point DFTs or as the sum
of Q R-point DFTs.
In practice, by zero-padding a sequence into an N-point
sequence with N=2
v
, we can choose the nearest power-of-two
FFT algorithm for implementing a DFT.
The FFT algorithm of power-of-two is also called the Cooley-
Tukey algorithm since it was first proposed by them.
For short-length sequence, Goertzel algorithm might be more
efficient.