Sie sind auf Seite 1von 9

UNIVERSIDADE TECNOLGICA FEDERAL DO PARAN CURSO DE ENGENHARIA DA COMPUTAO

ADENILSON D. C. MUMBELLI EDEGAR KORB LUIS FELIPE BENEDITO

SISTEMAS LINEARES FAST FOURIER TRANSFORM - FFT

PATO BRANCO 2012

1. Introduo A transformada de Fourier (Transform Fourier - TF) uma ferramenta amplamente empregada em processamento de sinais de sons e imagens, pois sua aplicao torna algumas operaes mais simples e facilita o entendimento j que ao aplicar a transformada de Fourier o domnio restrito frequncia. Este tipo de transformada consiste em decompor um sinal em suas componentes elementares seno e cosseno j que qualquer sinal pode ser representado pela soma de senos e cossenos conforme demonstrado pelo matemtico e fsico francs Jean Baptiste Joseph Fourier (17681830). Existe ainda a transformada discreta de Fourier (Discret Fourier Transform - DFT), esta por sua vez utiliza um nmero finito de pontos no domnio tempo para definir uma representao, tambm discreta, do sinal no domnio da frequncia. Contudo, o estudo tem por objetivo entender um pouco sobre os algoritmos de transformada rpida de Fourier (Fast Fourier Transform FFT) aplicado para computar a transformada discreta de Fourier e sua inversa. A FFT de grande importncia para uma variedade de aplicaes como o processamento digital de imagens, a resoluo de equaes diferenciais parciais e tambm algoritmos para multiplicao rpida de nmeros inteiros muito grandes. O algoritmo mais conhecido para a transformada rpida de Fourier denominado Cooley-Tukey, que se baseia na ideia de diviso e conquista.

2. Representao Matemtica A FFT implementada com o objetivo de diminuir a complexidade (em relao ao tempo) necessria para calcular uma DFT, buscando sempre aplicaes em tempo real. O nmero de operaes realizadas no clculo da DFT atravs da definio de ordem N, ou seja, para cada N valores de u, a expanso F(u) requer N multiplicaes complexas de x(n) por Wux alm de N-1 adies dos resultados. Aplicar a FFT reduzir o nmero de operaes necessrias no clculo da DFT, j que alguns termos podem ser calculados uma nica vez e armazenados para manipulaes futuras. Portando, as multiplicaes de x(n) que antes eram levadas em considerao, agora so desconsideradas baixando a ordem de complexidade do clculo N.LogN. No quadro abaixo podemos visualizar quo vantajosa pode ser a aplicao desde algoritmo:
N 2 4 8 16 32 64 128
Quadro 1: Vantagem da aplicao da FFT.

N (Definio) 4 16 64 256 1024 4096 16384

N.Log2N (FFT) 2 8 24 64 160 384 896

Vantagem 2 2 2,67 4 6,4 10,67 18,29

2.1. Decimao no tempo (Decimation in time DIT) Para simplificar, admitimos que N=2n, com n inteiro positivo, este algoritmo decompe do clculo da DFT de comprimento N em DFTs mais curtas, dividindo sucessivamente a sequncia de entrada em duas subsequncias com metade do comprimento, uma referente s amostras com ndice par e outra com amostras com ndice mpar. A execuo do algoritmo FFT segue a seguinte expresso matemtica: ( ) ( ) ( )

( ) ( ( ) )[
( )

( (

) )[

notando que ( ) ( ) ( ) (

( )

, ento:

) ( )

) 2

em que G(k) e H(k) so DFTs de comprimento N/2, e so referente, respectivamente s entradas de ndice par e mpar. Considerando N=8 e reconhecendo que G(k) e H(k) so peridicas com perodo N/2, a decomposio descrita pelas expresses matemticas acima tem a seguinte caracterstica:

Figura 1: Decomposio da DFT de comprimento 8.

Computacionalmente, esta decomposio j representa um ganho significativo, pois substitui uma estrutura de ordem proporcional a N2 por uma de ordem proporcional a 2(N/2)+N=N/2+N que menor que N. O clculo de cada coeficiente X(k) requer, na combinao de G(k) com H(k), uma multiplicao complexa pelo coeficiente , com . Como estes coeficientes so simtricos, o nmero de multiplicaes pelos coeficientes poder ainda ser reduzido pela metade, utilizando novamente para a

segunda metade do clculo de X(k), a multiplicao pelos coeficientes j realizadas para a primeira metade do algoritmo. Ou seja, para N=8, ser em particular ( ) ( ) ( ) ( ) ( ) ( ) ( ) mas ser tambm ( ), o que permite simplificar a estrutura da Figura 1:

Figura 2: Simplificao da DFT de comprimento 8.

O procedimento anterior por ainda ser repetido em relao a cada uma das DFTs de comprimento N/2(N=8, portanto N/2=4):

Figura 3: Simplificao da DFT de comprimento 4 com ndices pares.

J que a DFT inicial de comprimento N=8, ainda possvel fazer uma melhoria, otimizando o clculo da das DFTs de comprimento N/4, de forma que, cada uma destas DFTs pode ser simplificada como no exemplo da Figura 4:

Figura 4: Simplificao da DFT de comprimento 2.

Agrupando todo o processo de simplificao, obtm-se a seguinte estrutura:

Figura 5: Estrutura global do processo de simplificao DIT.

As operaes aritmticas, tanto do algoritmo DIT quanto do algoritmo DIF obedece a uma proporo em contrapartida ordem do algoritmo DIT executado pela definio. Logo, a vantagem da aplicao dos algoritmos FFT se mostra bastante vantajosa como mostra o Quadro 1. A operao mais elementar do processo de simplificao da DFT denominada Butterfly (borboleta) pela semelhana entre a estrutura e o inseto:

Figura 6: Estrutura elementar designada Butterfly.

Computacionalmente, cada borboleta tem um custo computacional equivalente a uma multiplicao e duas somas, ambas complexas. Contudo, como o nmero de entradas ou sadas de cada borboleta 2, dizemos que o algoritmo de raiz 2(radix-2), portanto o nmero de borboletas por andar constante e igual a N/2. Entretanto, o nmero de grupo de DFT varia por um fator de 2, e o nmero de borboletas por andar varia inversamente pelo mesmo fator. Cada borboleta produz sadas que substituem seus valores de entrada, no afetando outras posies da estrutura de dados em cada andar, o que causa o processamento paralelo dos dados e permite o clculo in-place, ou seja, os dados de entrada so manipulados estgio estgio, no havendo a necessidade de memria adicional:

Figura 7: Fluxo algoritmo DIT.

Neste algoritmo, os dados de entrada so arranjados na sada de forma que seu correspondente binrio seja invertido na sada conforme decorre a decomposio, a este processo dado o nome de bit reversal. Por exemplo, a entrada com valor (4)10 corresponde a (100)2, logo sua sada ser (1)10 e portanto (001)2. 2.2. Decimao na frequncia (Decimation in frequency DIF) Ao contrrio do algoritmo DIT, o algoritmo DIF no decompe os dados X(n) sucessivamente em sequncias mais curtas, e sim efetua a decomposio sucessiva das sadas X(k) em sequncias mais curtas, sendo que estas so obtidas por DFTs correspondentemente mais curtas. Com no algoritmo DIT, para simplificar, admite-se aqui que N uma potncia de 2, logo, para as sadas de ndice par, temos: ( ) ( ) ( ) ( )

( ) ( ) ( ) [ ( ) (

( ( )]

) )

Entretanto, para as sadas com ndices impares, tem-se que: ( ( ( ) ) )


( ) ( ) [ ( )

( (

) )

)(

)]

Considerando um exemplo com N=8, as equaes 3 e 4 so, juntamente ilustradas pela seguinte estrutura:

Figura 8: Decomposio algoritmo DIF.

Comparando a decomposio de uma DFT pelo algoritmo DIT representado pela Figura 5 com a decomposio pelo algoritmo DIF ilustrado pela Figura 8, nota-se que a decimao na frequncia nada mais que uma transposio do algoritmo de decimao no tempo, com inverso do fluxo de sinal, deslocamento dos ns de soma e troca das entradas com as sadas. Observe abaixo a borboleta representativa do algoritmo DIF:

Figura 9: Fluxo do algoritmo DIF.

Assim como no algoritmo DIT, o algoritmo DIF possui N/2 borboletas por andar e o total de operaes continua o mesmo, sendo possui uma multiplicao complexa de ordem e duas adies complexas com ordem , podendo ainda realizar o clculo in-place j que uma transposio do algoritmo DIT. Como as entradas encontram-se ordenadas sequencialmente e suas sadas so dispostas segundo uma ordem bit-reversed, pode-se aplicar s entradas o mesmo algoritmo bit-reversal utilizado no algoritmo DIT para organiz-las sequencialmente. 3. Algoritmo FFT(Matlab) 3.1. Sintaxe Y Y Y Y = = = = fft(x) fft(X, n) fft(X, [], dim) fft(X, n, dim)

3.2. Definio As funes Y=fft(x)e Y=IFFT(X) programam a transformada de Fourier e a Transformada Inversa de Fourier dado par de vetores de comprimento N por: ( ) ()
( )( )

()
( )

( )

)(

onde

uma raiz da unidade.

3.3. Descrio Y=fft(x) retorna a transformada discreta de Fourier (DFT) do vetor x, calculado atravs de uma transformao rpida de Fourier (FFT). Se X uma matriz de entrada, Y=fft(x) retorna a transformada de Fourier de cada coluna da matriz. Se o X de entrada uma matriz multidimensional, fft opera na primeira dimenso. Y=fft(X, n) retorna o ensimo ponto da DFT. fft(X) equivalente a fft(x, n), onde n o tamanho de X na primeira dimenso. Se o comprimento de X menor do que n, X preenchido com zeros a direita ao comprimento n. Se o comprimento de X maior do que n, a sequncia X truncada. Quando X uma matriz, o comprimento das colunas so ajustados da mesma maneira. Y=fft(X, [], dim) e Y=fft(X, n, dim) aplicam a operao da FFT atravs da dimenso dim. 4. Implementao Um uso comum da transformada de Fourier encontrar as componentes de frequncia de um sinal enterrado em um sinal ruidoso no domnio do tempo. Considerando os dados amostrados a 1000Hz. Formar um sinal que contem uma senide de 50Hz e amplitude 0,7 e uma outra senoide de 120Hz com amplitude 1 e corromp-la com algum rudo de mdia zero aleatria:
Fs = 1000; T = 1/Fs; L = 1000; t = (0: L-1) * T; y = x + 2 * randn (tamanho (t)); parcela (Fs * t (1:50), y (1:50)) title ('Sinal corrompido com mdia zero rudo aleatrio') xlabel ('tempo (milissegundos)') %frequncia de amostragem %tempo de amostra %comprimento do sinal %vetor tempo %senoides mais rudo

x = 0,7 * sin(2 * pi * 50 * t ) + sin(2* pi * 120 * t); %soma das senides

Figura 10: sinal original.

difcil identificar os componentes de frequncia olhando para o sinal original. A converso para o domnio da frequncia, a transformada de Fourier discreta do sinal ruidoso y encontrado tomando a transformada de Fourier rpida (FFT):
NFFT = 2 ^ nextpow2 (L); Y = fft (y, NFFT) / L; f = Fs / 2 * linspace (0,1, NFFT / 2 +1); %Plot espectro de amplitude de um s lado. plot (f, 2 * abs (Y (1: NFFT / 2 +1))) title ('Espectro de amplitude de um lado de y (t)') xlabel ('Freqncia (Hz)') ylabel ('| Y (f) |') %prxima potncia de 2 de comprimento de y

Figura 11: Grfico de sada.

A principal razo para as amplitudes no serem exatamente 0,7 e 1 o rudo. Vrias execues do presente cdigo (incluindo recomputao de y) ir produzir aproximaes diferentes para 0,7 e 1. A outra razo que voc tem um sinal de comprimento finito. Aumentar L 1000-10.000 no exemplo acima ir produzir aproximaes muito melhores, em mdia. 5. Referncias [1] http://www.cin.ufpe.br/~cabm/pds/PDS_Aula07%20FFT.pdf [2] http://www.inf.ufrgs.br/~flavio/ensino/cmp237/sandro_relatorio.pdf [3] ftp://ftp.fe.up.pt/pub/Deec/ajf/pas/dftfft.pdf [4] http://www.cmlab.csie.ntu.edu.tw/cml/dsp/training/coding/transform/fft.html [5] http://www.mathworks.com/help/matlab/ref/fft.html [6] http://www2.ee.ufpe.br/codec/DTF%20E%20FFT.pdf

Das könnte Ihnen auch gefallen