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