Vous êtes sur la page 1sur 39

1

Carlos Alexandre Mello cabm@cin.ufpe.br


FFT Fast Fourier Transform
Carlos Alexandre Mello
2
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmos Rpidos
Objetivo: melhoria do desempenho de
algoritmos
Implementam de forma mais eficiente um
algoritmo sem modificar seu resultado final
Exemplos.....
2
3
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmos Rpidos
x = a.c + a.d + b.c + b.d
4 multiplicaes
x = (a + b).(c + d)
2 multiplicaes
Mesma expresso anterior
Menor nmero de operaes
No caso, a multiplicao a operao mais custosa
3
4
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmos Rpidos
Multiplicao de nmeros complexos
(e + jf) = (a + jb).(c + jd)
e = (a.c b.d)
f = (a.d + b.c)
4 multiplicaes e duas adies
e = (a b).d + a.(c d)
f = (a b).d + b.(c + d)
3 multiplicaes apenas
4
5
Carlos Alexandre Mello cabm@cin.ufpe.br
Transformada Discreta de Fourier
Considere uma sequncia x[n] que
peridica de perodo T, ou seja:
x[n] = x[n + r.T], qualquer r inteiro
Tal seqncia pode ser representada por
uma srie de Fourier, correspondendo
soma de seqncias exponenciais
relacionadas harmonicamente
5
6
Carlos Alexandre Mello cabm@cin.ufpe.br
Transformada Discreta de Fourier
A representao em srie de Fourier tem a forma:
A representao em srie de Fourier de um sinal
peridico contnuo no tempo geralmente precisa
de infinitas exponenciais complexas
No entanto, a srie de Fourier para qualquer sinal
discreto no tempo com perodo N requer apenas N
exponenciais complexas j que elas so peridicas
6
7
Carlos Alexandre Mello cabm@cin.ufpe.br
Assim, a representao torna-se
E os coeficientes da srie de Fourier X[m] so
obtidos a partir de x[n] pela relao
Transformada Discreta de Fourier
7
8
Carlos Alexandre Mello cabm@cin.ufpe.br
Se chamarmos W
N
= e
-j(2/N)
, temos o par:
Equao de Anlise:
Equao de Sntese:
Transformada Discreta de Fourier
8
W
N
= e
-j(2/N)
9
Carlos Alexandre Mello cabm@cin.ufpe.br
Transformada Discreta de Fourier
Alta complexidade computacional
O(N
2
)
Para diminuir essa complexidade,
algoritmos rpidos so empregados
A FFT usa um nmero reduzido de
operaes aritmticas para calcular a DFT
em relao ao seu clculo direto
9
10
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
1965
J .W.Cooley (IBM) e J .W.Tukey (Bell Labs)
Decimao no Tempo
Ideia:
dividir a seqncia x[n] em duas seqncias: uma
com os coeficientes de ndice par e outra com os
coeficientes de ndice mpar
Algoritmos no qual a seqncia decomposta
sucessivamente em seqncias menores so
chamados de algoritmos de decimao em tempo
10
11
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
11
Sequncia de
Entrada
Coeficientes
Pares
Coeficientes
mpares
12
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
Fazendo n = 2r e n = 2r + 1
12
(Eq. 1)
(Eq. 2)
(Eq. 3)
13
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
Mas W
N
2
= W
N/2
j que:
Logo, a Eq. 3 pode ser re-escrita como:
13
(Eq. 4)
Twiddle
14
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
Cada parcela da Eq. 4 anterior uma DFT de N/2
pontos
G[k] e H[k]
No caso de uma DFT de 8 pontos, o resultado da
decimao no tempo gera o seguinte diagrama de
fluxo...
14
15
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
15
ndices
pares
ndices
mpares
16
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
X[0] = G[0] + H[0]*W
N
0
17
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
X[4] = G[4] + H[4]*W
N
4
= G[0] + H[0]*W
N
4
18
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
Anlise de Complexidade:
DFT clssica:
N
2
multiplicaes complexas e adies
Cooley-Tukey
18
DFT de
N/2 pontos
(N/2)
2
operaes
DFT de
N/2 pontos
(N/2)
2
operaes
+ N multiplicaes pelo twiddle
N + 2(N/2)
2
=
= N + N
2
/2
operaes
19
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
Anlise de Complexidade:
Assim, usando o algoritmo de Cooley-Tukey, para N>2,
temos uma complexidade menor do que usando o
algoritmo de DFT clssico
Mas, ainda podemos buscar melhoria na
complexidade se aplicarmos novamente a ideia de
diviso de Cooley-Tukey
20
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
20
DFT de N-Pontos
DFT de N/2 Pontos
H[k]
DFT de N/2 Pontos
G[k]
DFT de N/4
Pontos
DFT de N/4
Pontos
DFT de N/4
Pontos
DFT de N/4
Pontos
21
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
Se N potncia de 2, podemos dividir novamente
o conjunto de dados:
22
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
G[k] = {x[0] x[2] x[4] x[6] }
0 1 2 3
ndices
pares
ndices
mpares
23
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
Fluxo
completo
da DFT de
8 pontos
24
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
Anlise de Complexidade
Para o caso geral, mas ainda considerando N
como potncia de 2, podemos continuar com a
decomposio da DFT de N/4 pontos em duas de
N/8 pontos e continuarmos at que s restem
DFTs de 2 pontos
Como em uma rvore, esse processo requer v
estgios, onde v = log
2
N
25
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
Anlise de Complexidade
Para uma nica decimao (N -> N/2):
N + 2(N/2)
2
operaes
Com mais uma decimao (N/2 -> N/4):
O termo (N/2)
2
substitudo por N/2 + 2(N/4)
2
:
N + 2[N/2 + 2(N/4)
2
]
N + N + 4(N/4)
2
Se N=2
v
,a decomposio pode acontecer
no mximo v = log
2
N
26
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
Anlise de Complexidade
Assim, se fizermos a decomposio o maior
nmero de vezes possvel, temos uma quantidade
total de multiplicaes complexas e adies igual
a N.log
2
N
27
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
A DFT de 8 pontos teve sua computao reduzida
at DFTs de 2 pontos:
x[0]
x[4]
W
N
0
= 1
W
2
= W
N
N/2
= -1
28
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
O processo pode ser simplificado mais ainda...
A obteno de um par de valores de um estgio
depende apenas de um par de valores do estgio
anterior
grfico butterfly
Estgio m-1
W
N
r
W
N
r+N/2
Estgio m
MAS:
W
N
N/2
= e
-j(2/N)N/2
= e
-j
= -1
Assim, o fator W
N
r+N/2
pode
ser escrito como:
W
N
r+N/2
= W
N
N/2
.W
N
r
= -W
N
r
29
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
Isso muda o grfico da butterfly para:
Estgio m-1
W
N
r
-1
Estgio m
Grfico butterfly simplificado
30
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
Em termos prticos, para desenvolver o clculo da
FFT, poderamos usar dois arrays:
um para o array sendo computado e outro para o array
usado na computao
Vamos denotar a seqncia de nmeros
complexos resultante do m-simo estgio como
Xm[l], onde l = 0, 1, ..., N-1, e m=1, 2, ...., v
Alm disso, vamos definir o conjunto de amostras
de entrada como X
0
[l]. Podemos pensar em X
m-1
[l]
como o array de entrada e X
m
[l] como o array de
sada do m-simo estgio
30
31
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
Assim, o diagrama butterfly pode ser descrito por
equaes como:
X
m+1
(p) = X
m
(p) + W
N
r
.X
m
(q)
X
m+1
(q) = X
m
(p) + W
N
r + N/2
.X
m
(q)
que podem ser re-escritas como:
X
m+1
(p) = X
m
(p) + W
N
r
.X
m
(q)
X
m+1
(q) = X
m
(p) - W
N
r
.X
m
(q)
31
32
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
Ou seja...
32
33
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
33
Relao
entrada-sada
dos ndices...
34
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
Ordenao Bit-Reverso
Ou seja:
X
0
[0] = x[0]
X
0
[1] = x[4]
X
0
[2] = x[2]
X
0
[3] = x[6]
X
0
[4] = x[1]
X
0
[5] = x[5]
X
0
[6] = x[3]
X
0
[7] = x[7]
34
Que implica:
X
0
[000] = x[000]
X
0
[001] = x[100]
X
0
[010] = x[010]
X
0
[011] = x[110]
X
0
[100] = x[001]
X
0
[101] = x[101]
X
0
[110] = x[011]
X
0
[111] = x[111]
35
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
Ordenao Bit-Reverso
35
Diagrama em rvore apresentando
a ordenao bit-reverso
36
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
A representao final do grfico butterfly para uma
DFT de 8 pontos fica....
36
37
Carlos Alexandre Mello cabm@cin.ufpe.br
Algoritmo de Cooley-Tukey
37
38
Carlos Alexandre Mello cabm@cin.ufpe.br
Outras FFTs
Cooley-Tukey tambm chamado de Radix-2
Existem Radix-4 e Radix-8
Danielson-Lanczos
Quebra em sequncias de tamanho primo como uma
fatorao
Winograd
Para DFTs de N pequeno (at 16)
Re-ordena os dados de entrada e sada
39
Carlos Alexandre Mello cabm@cin.ufpe.br
FFT
Referncias:
Discrete-Time Signal Processing, J .R.Buck,
A.Oppenheim e R.W.Schafer, Prentice-Hall,
1999
Fast Algorithms for Digital Signal Processing,
R.E.Blahut, Addison-Wesley, 1985
39

Vous aimerez peut-être aussi