Você está na página 1de 39

A DFT E A FFT

Em casos práticos, normalmente a avaliação da transformada de Fourier


não é feita utilizando os procedimentos analíticos.

Muitas vezes não se dispõe de uma expressão analítica para a função que
se deseja analisar o espectro.

A Transformada Discreta de Fourier (DFT) é muito usada no


estudo do espectro de sinais e é determinada numericamente com o
auxílio de computador digital.
Considerando-se N amostras do sinal no domínio do tempo, denotadas
f(k), k=0,1,2,...,N-1, a DFT é dada por um conjunto de N amostras do sinal
no domínio da freqüência, denotadas por F(n), n= 0,1,2,...,N-1 e definidas por


1 N -1
F (n) ≡ f (k) e - j2 πnk /N
N k =0 .

Diz-se então que f(k) ↔ F(n) formam um par transformada e a reobtenção


do sinal no domínio do temporal pode ser feita usando a transformada inversa
discreta de Fourier:


N -1
j2 πkn /N
f (k) = F (n) e
n=0 .
PROPRIEDADES DA DFT

Propriedades similares àquelas da transformada de Fourier são


demonstráveis para a DFT. Em particular:

⎛ n ⎞ ⎛ n ⎞
Se x (kTs ) ↔ X ⎜ ⎟ e y (kTs ) ↔ Y ⎜ ⎟
⎝ s⎠
NT ⎝ s⎠ ,
NT

P1 - Linearidade.
⎛ n ⎞ ⎛ n ⎞
x (kTs ) + y (kTs ) ↔ X ⎜ ⎟+ Y ⎜ ⎟
⎝ s⎠
NT ⎝ s⎠
NT
P2 - Simetria.
⎛ n ⎞
X (kTs ) ↔ x ⎜ −
1

N ⎝ NTs ⎠

P3 - Deslocamento no Tempo.
⎛ n ⎞
jπnl/ N
x (kTs − lTs ) ↔ X⎜ ⎟e
⎝ NTs ⎠

P4-Teorema da Convolução em Freqüência.


⎛ i ⎞ ⎛n-i ⎞
∑ X ⎜ NT ⎟ Y⎜ NT ⎟
N -1
1
x (kTs ) y (kTs ) ↔
N i= 0 ⎝ s⎠ ⎝ s⎠

1 ⎛ n ⎞ ⎛ n ⎞
≡ X⎜ ⎟* Y ⎜ ⎟
N ⎝ NTs ⎠ ⎝ NTs ⎠
P5 - Teorema de Parseval.
⎛ n ⎞
2
N −1
∑ ∑
N -1
1
x (kTs ) = X⎜ ⎟
2

k =0 N n =0 ⎝ NTs ⎠

As amostras da DFT são periódicas, verificando as relações:

F(n+mN) = F(n) e f(k+mN) = f(k) m=1,2,3,...


Quando se deseja trabalhar com os valores de freqüência e tempo, usa-se:

⎛ n ⎞ ⎛ n ⎞ N −1 2 πkn

⎟ = ∑ f (kTs ) e N
-j
f (kTs ) ↔ F ⎜ ⎟ , onde F ⎜
⎝ NTs ⎠ ⎝ NTs ⎠ k =0

ao invés da notação simplificada f(k) ↔ F(n).

Um aumento na quantidade N de amostras consideradas (e uma escolha do

tempo de amostragem Ts) implica em uma melhor representação do espectro.


J.W. Cooley (IBM) em colaboração com J.W. Tukey (Bell Labs)
conseguiram uma revolução maior no tratamento digital de sinais em 1965 com a
publicação da transformada rápida de Fourier, a FFT. Trata-se de um método
engenhoso e altamente eficiente de reagrupar os cálculos dos coeficientes de uma
DFT.
Muitos “softwares” dispõem de rotinas para o cálculo da FFT, e.g.,
MATEMATICATM, MATLABTM, MATHCADTM etc.

Ao invés do cálculo da DFT diretamente pela definição, faz-se uso de um


algoritmo conhecido como a FFT (Transformada Rápida de Fourier) que
permite avaliar a DFT com menor esforço computacional.

A FFT não é um tipo diferente de transformada e sim uma técnica


que possibilita avaliar DFT de forma mais rápida e econômica.
A FT não basta? Por que a DFT?

As potencialidades da análise espectral com base na Transformada de Fourier


contínua são bem estabelecidas. Ainda que teoricamente atrativo, o cálculo prático do
espectro via a transformada clássica (empregando propriedades ou soluções
analíticas) não é comum.

Vários sinais de interesse (como voz, vídeo etc.) não possuem expressões
analíticas para descrevê-los.
A maneira usual de lidar com sinais físicos é "calcular" a transformada
através de um equipamento (Hardware): analisador de espectro.

Este instrumento realiza o cálculo da Transformada de Fourier e exibe o


resultado em tela. Entretanto, com o desenvolvimento de técnicas de
Processamento de Sinais DSP (e Processadores em chip), a DFT aparece
como uma solução prática cada vez mais atrativa.
A redução acentuada no custo dos DSPs e o aumento da capacidade de

processamento (e.g. milhões de MIPS- Mega Instruções Por Segundo), em conjunto

com o aparecimento de novas técnicas eficientes para a avaliação de transformadas

discretas (as ditas Transformadas Rápidas), vêm permitindo "operar" em tempo real

com muitos sinais.

Assim, as transformadas discretas vêm se firmando como ferramentas


"por excelência" na análise espectral.
O tamanho dos analisadores de espectro não pode ser comparado ao
tamanho reduzido dos DSPs, que adicionalmente permitem operação em
grande velocidade, viabilizando numerosas aplicações.
F(w) espectro

tensão
f(t)

Aplicação do algoritmo FFT é ilustrada estimando-se um espectro de um


pulso retangular amostrado a uma taxa de Ts-1= 1amostra/seg a partir da
origem e empregando N=128 amostras no cálculo da DFT.
Assim, as amostras são dadas por:
x(k) = 1+ j0 para k = 1,2,...,29
x(k) = 0+ j0 para k = 31,32,...,127
x(0) = x(30) = 1/2+ j0.
Naturalmente, as amplitudes teóricas do módulo da transformada valem:

X (nf s ) = 30 Sa (nπ 30 / 128) , n = 0,1,2, ...,127 .

A tabela exibe valores do módulo da transformada calculados segundo a


expressão analítica e pela transformada discreta via FFT.
Tabela I. DFT versus Fourier- Caso de um pulso.
n DFT teórico n DFT teórico
1 30.00 30.00 33 1.000 1.273
2 27.36 27.36 34 0.705 0.915
3 20.26 20.27 35 0.089 0.117
4 10.89 10.91 36 0.514 0.693
5 1.981 1.987 37 0.805 1.110
6 4.168 4.189 38 0.669 0.944
7 6.451 6.498 39 0.215 0.311
8 5.210 5.262 40 0.301 0.447
9 1.924 1.949 41 0.617 0.941
10 1.500 1.525 42 0.596 0.936
11 3.521 3.593 43 0.282 0.457
12 3.505 3.593 44 0.137 0.230
13 1.831 1.886 45 0.444 0.770
14 0.444 0.460 46 0.498 0.896
15 2.160 2.250 47 0.300 0.562
16 2.589 2.713 48 0.022 0.042
17 1.707 1.801 49 0.293 0.600
18 0.107 0.118 50 0.385 0.830
19 1.341 1.436 51 0.276 0.630
20 1.965 2.121 52 0.048 0.117
21 1.555 1.694 53 0.168 0.435
22 0.429 0.471 54 0.268 0.746
23 0.786 0.873 55 0.221 0.665
24 1.487 1.668 56 0.075 0.249
25 1.383 1.568 57 0.076 0.278
26 0.607 0.697 58 0.157 0.646
27 0.391 0.455 59 0.142 0.672
28 1.100 1.294 60 0.063 0.355
29 1.195 1.427 61 0.019 0.132
30 0.691 0.837 62 0.059 0.536
31 0.108 0.133 63 0.049 0.654
32 0.778 0.974 64 0.016 0.434
Espectro de um porta:
FFT vs teórico
30

30 |Sa(x)|
|F(n)|
30 |Sa(n pi 30/180)| e |X(n)| 20

10

0 n
0 16 32 48 64 80 96 112 128
10 0
30 |Sa(x)|

|F(n) |
10

Es p e c t r o

.1

.0 1 n
0 8 16 24 32 40 48 56 64

Figura. Espectro discreto da função porta.


Devido à presença de descontinuidades, o valor mostrado no instante t
deve ser consistente com
f(t) = 1/2 [ f(t +) + f(t -) ]
de modo que a fórmula de inversão continue válida.

Note-se que a DFT é simétrica em torno do ponto n=N/2.

Isto se segue do fato que a parte real (resposta imaginária) da


transformada de um sinal real é par (respectivamente ímpar).
Assim, o resultado obtido para n>N/2 corresponde simplesmente às
freqüências negativas.

Claramente, as aproximações são mais pobres nas altas freqüências.

Exercício
-t
Avaliar com auxílio de microcomputador a DFT do sinal h (t) = e u (t)
tomando N=32 amostras e considerando o intervalo entre as amostras
Ts=0,25 seg. (taxa de amostragem). No exemplo, assume-se h(0)=0,5.
É fácil perceber novamente que as aproximações são bastante pobres nas altas
freqüências. Para reduzir o erro, torna-se necessário um aumento de N e/ou
uma diminuição de Ts.

Supondo que a transformada discreta de Fourier é empregada na avaliação


do espectro de sinais reais contínuos, são requeridas operações de:

c discretização (amostragem),
d truncamento e
e periodicidade s/ sinal original.
h(t) H(w)

t (a) Sinal original.


w

t
(b) Relógio amostrador w

t w
(c) Discretização
Sa(x)

w
t
(d) função de truncamento

t w
(e) Sinal truncado

w
(f) trem de periodização
t

t
(g) Periodicidade.
w

Figura. Desenvolvimento da DFT: Discretização, truncamento e periodização.


COMPLEXIDADE:
ALGORITMOS COM ARQUITETURAS PARALELAS

Formalmente, supõe-se que um algoritmo é implementado por intermédio de L

máquinas seqüenciais interconectadas: S=(S1,S2,...,SL).

Cada uma possui uma complexidade espacial X=(X1,X2,...,XL) e uma

complexidade temporal T=(T1,T2,...,TL).


O trabalho de cálculo W é definido pelo produto escalar destes vetores,
L
X = ∑ Xi
L
W = X • T = ∑ X i Ti . Globalmente, a complexidade no espaço é e a
i =1 i =1

complexidade no tempo é T:=MAX (Ti).

Pode haver um compromisso entre complexidade temporal e espacial,


nos algoritmos de implementação paralela.
O esforço computacional pode ser definido como o número máximo de
operações elementares necessárias para resolver o problema. No caso da
DFT, pode-se tratar da complexidade multiplicativa e complexidade aditiva
i.e., número de multiplicações ponto flutuante (respectivamente adições)
necessárias para calculá-la.

Tradicionalmente tem-se usado apenas a complexidade multiplicativa como

o parâmetro mais importante.


FFT- Transformada Rápida de Fourier
(Cooley-Tukey base 2)

A FFT foi implementada com o objetivo de diminuir complexidade (temporal)


necessária para calcular uma DFT (Transformada Discreta de Fourier), visando
aplicações em tempo real.

O número de operações realizadas no cálculo da DFT através da


definição é proporcional à N2, i.é., para cada dos N valores de u, a expansão
de F(u) requer N multiplicações complexas de x(n) por Wux além de (N-1)
adições dos resultados.
Alguns dos termos podem ser computados uma vez e armazenados para serem
usados em operações futuras. Logo tais multiplicações de x(n) não são consideradas
na implementação.
1 N −1
F (u ) = ∑ f ( x) ⋅W N
ux

N x =0 Eq. 1

Algumas decomposições apropriadas na Eq.1 podem tornar o número de


multiplicações e adições proporcionais a N.Log2N.

Este procedimento é denominado de Transformada Rápida de Fourier ou

FFT (Fast Fourier Transform).


N N2 (DFT) N.log2N (FFT) Vantagem
2 4 2 2
4 16 8 2
8 64 24 2,67
16 256 64 4
32 1024 160 6,4
64 4096 384 10,67
128 16384 896 18,29
256 65536 2048 32
512 262144 4068 56,89
1024 1048576 10240 102,4
2048 4194304 22528 186,18
4096 16777216 49512 341,33
8192 671088964 106496 630,15
O Algoritmo FFT

Por conveniência, a Eq. 1 pode ser rescrita sob a seguinte forma:


1 N −1
π
F (u ) = ∑ f ( x) ⋅W N onde WN = exp[− j ⋅ 2 ⋅
ux
]
N x =0 N .

Assumindo que N é da forma: N=2n; em que n é inteiro positivo, então N pode


ser expresso como: N=2*M; em que M é um inteiro positivo.

Substituindo esta relação na Eq. 1 tem-se:


2 M −1
1
F (u ) = ∑
ux
f ( x)W 2 M .
2⋅M x =0
Dividindo-se o somatório em duas partes, relativas aos índices pares e ímpares:

1⎡ 1 M −1
1 M −1

∑ ∑
u ( 2 x +1)
F (u ) = ⎢ + f (2 x + 1)W 2 M
u(2 x)
f (2 x)W 2 M ⎥ Eq. 2
2 ⎣M x =0 M x =0 ⎦

= W M , é possível rescrever a eq. 2 na forma:


2 ux ux
Como W 2M

1⎡ 1 M −1
1 M −1

F (u ) = ⎢ ∑ + ∑ f (2 x + 1)W 2 M
ux u(2 x) u
f (2 x)W M W 2m ⎥⎦ Eq. 3
2 ⎣M x =0 M x =0
Agora considerando as seguintes DFTs:

M −1
1
Feven(u ) = ∑
ux
f (2 x)W M
M x =0

M −1
1
Fodd (u ) = ∑ f (2 x + 1)W M ; para u=0,1,2,....,M-1.
ux

M x =0
Chega-se a uma relação que decompõe a DFT F(u) de comprimento 2M
em duas DFTs Feven(u) e Fodd(u), ambas de comprimento M:

F (u ) =
1
2
[Feven(u ) + Fodd (u )W 2 M
u
] Eq. 4

u+M u+M
= −W 2 M ,
u
=W M
u
Observa-se também: W M e W 2M de modo que segue-se da eq.3,

1
[
F (u + M ) = Feven(u ) − Fodd (u )W 2 M
2
u
] Eq. 5
Uma transformada de comprimento N pode ser computada dividindo a
expressão original em duas partes, como indicado.

Número de Operações

Por indução, o número de multiplicações complexas a adições requeridas na


implementação do algoritmo FFT é, respectivamente:
1
m(n) = N log 2 N
2
e:
a(n) = N log 2 N
Implementação da FFT

O principal ponto das implementações diz respeito ao arranjo dos dados de


entrada visando à aplicação da divisão de uma transformada em termos de
outras de menor comprimento.

O procedimento de reordenação pode ser ilustrado através de um exemplo


simples (N=8).
Entrada {f(0), f(1), f(2), f(3), f(4), f(5), f(6), f(7)}.

Separando as amostras de argumentos pares e ímpares:

Pares {f(0), f(2), f(4), f(6)}.


Ímpares {f(1), f(3), f(5), f(7)}.
Contudo, para reaplicar o procedimento, as componentes pares e ímpares
devem ser novamente separadas:

Pares {f(0), f(4)}. {f(1), f(5)}.

Ímpares {f(2), f(6)}. {f(3), f(7)}.


REARRANJO:
Entrada {f(0), f(1), f(2), f(3), f(4), f(5), f(6), f(7)}.

{f(0), f(4), f(2), f(6), f(1), f(5), f(3), f(7)}.


Reordenação do arranjo e leitura inversa de bits
Numeração Arranjo Numeração Arranjo
original original bits invertidos reordenado
0 0 0 f(0) 0 0 0 f(0)
0 0 1 f(1) 1 0 0 f(4)
0 1 0 f(2) 0 1 0 f(2)
0 1 1 f(3) 1 1 0 f(6)
1 0 0 f(4) 0 0 1 f(1)
1 0 1 f(5) 1 0 1 f(5)
1 1 0 f(6) 0 1 1 f(3)
1 1 1 f(7) 1 1 1 f(7)

A existência de algoritmos rápidos é um fator decisivo nas inúmeras


aplicações em tempo real da DFT.
Devido ao algoritmo Cooley-Tukey base 2, freqüentemente usam-se
comprimentos que são potência de 2.
Uma curta tabela com uma cota inferior na complexidade para determinar
uma DFT de comprimento N, denotada µ(DFT(N), é mostrada.

N µ(DFT(N) N µ(DFT(N)
4 0 120 120
8 2 240 274
12 4 720 986
24 12 ... ...
48 38 65520 108594
60 56 ... ...

Você também pode gostar