34
1 Carlos Alexandre Mello – [email protected] FFT Fast Fourier Transform Carlos Alexandre Mello

FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – [email protected] 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

  • Upload
    others

  • View
    10

  • Download
    0

Embed Size (px)

Citation preview

Page 1: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

1 Carlos Alexandre Mello – [email protected]

FFT – Fast Fourier Transform

Carlos Alexandre Mello

Page 2: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

2 Carlos Alexandre Mello – [email protected]

Algoritmos Rápidos

Objetivo: melhoria do desempenho de

algoritmos

Implementam de forma mais eficiente um

algoritmo sem modificar seu resultado final

Exemplos.....

2

Page 3: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

3 Carlos Alexandre Mello – [email protected]

Algoritmos Rápidos

x = a.c + a.d + b.c + b.d

4 multiplicações

x = (a + b).(c + d)

1 multiplicação

Mesma expressão anterior

Menor número de operações

No caso, a multiplicação é a operação mais custosa

3

Page 4: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

4 Carlos Alexandre Mello – [email protected]

Algoritmos Rápidos

Multiplicação de números complexos

(e + jf) = (a + jb).(c + jd)

e = (a.c – b.d)

f = (a.d + b.c)

4 multiplicações e duas adições

e = (a – b).d + a.(c – d)

f = (a – b).d + b.(c + d)

3 multiplicações apenas

4

Page 5: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

5 Carlos Alexandre Mello – [email protected]

Equação de Análise:

Equação de Síntese:

Transformada Discreta de Fourier

5

WN = e-j(2/N)

Page 6: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

6 Carlos Alexandre Mello – [email protected]

Transformada Discreta de Fourier

Alta complexidade computacional

O(N2)

Para diminuir essa complexidade,

algoritmos rápidos são empregados

A FFT usa um número reduzido de

operações aritméticas para calcular a DFT

em relação ao seu cálculo direto

6

Page 7: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

7 Carlos Alexandre Mello – [email protected]

Algoritmo de Cooley-Tukey

1965

J.W.Cooley (IBM) e J.W.Tukey (Bell Labs)

Decimação no Tempo

Ideia:

dividir a sequência x[n] em duas sequências: uma

com os coeficientes de índice par e outra com os

coeficientes de índice ímpar

Algoritmos no qual a sequência é decomposta

sucessivamente em sequências menores são

chamados de algoritmos de decimação em tempo

7

Page 8: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

8 Carlos Alexandre Mello – [email protected]

Algoritmo de Cooley-Tukey

8

Sequência de

Entrada

Coeficientes

Pares

Coeficientes

Ímpares

Page 9: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

9 Carlos Alexandre Mello – [email protected]

Algoritmo de Cooley-Tukey

Fazendo n = 2r e n = 2r + 1

9

(Eq. 1)

(Eq. 2)

(Eq. 3)

Page 10: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

10 Carlos Alexandre Mello – [email protected]

Algoritmo de Cooley-Tukey

Mas WN2 = WN/2 já que:

Logo, a Eq. 3 pode ser re-escrita como:

10

(Eq. 4)

Twiddle

Page 11: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

11 Carlos Alexandre Mello – [email protected]

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

decimação no tempo gera o seguinte diagrama de

fluxo...

11

Page 12: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

12 Carlos Alexandre Mello – [email protected]

Algoritmo de Cooley-Tukey

12

Índices

pares

Índices

ímpares

Page 13: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

13 Carlos Alexandre Mello – [email protected]

Algoritmo de Cooley-Tukey

X[0] = G[0] + H[0]*WN0

Page 14: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

14 Carlos Alexandre Mello – [email protected]

Algoritmo de Cooley-Tukey

X[4] = G[4] + H[4]*WN4

= G[0] + H[0]*WN4

Page 15: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

15 Carlos Alexandre Mello – [email protected]

Algoritmo de Cooley-Tukey

Análise de Complexidade:

DFT clássica:

N2 multiplicações complexas e adições

Cooley-Tukey

DFT de

N/2 pontos

(N/2)2

operações

DFT de

N/2 pontos

(N/2)2

operações

+ N multiplicações pelo twiddle

N + 2(N/2)2 =

= N + N2/2

operações

Page 16: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

16 Carlos Alexandre Mello – [email protected]

Algoritmo de Cooley-Tukey

Análise de Complexidade:

Assim, usando o algoritmo de Cooley-Tukey, para N>2,

temos uma complexidade menor do que usando o

algoritmo de DFT clássico

Mas, ainda podemos buscar melhoria na

complexidade se aplicarmos novamente a ideia de

divisão de Cooley-Tukey

Page 17: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

17 Carlos Alexandre Mello – [email protected]

Algoritmo de Cooley-Tukey

17

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

Page 18: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

18 Carlos Alexandre Mello – [email protected]

Algoritmo de Cooley-Tukey

Se N é potência de 2, podemos dividir novamente

o conjunto de dados:

Page 19: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

19 Carlos Alexandre Mello – [email protected]

Algoritmo de Cooley-Tukey

G[k] = { x[0] x[2] x[4] x[6] } 0 1 2 3

Índices

pares

Índices

ímpares

Page 20: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

20 Carlos Alexandre Mello – [email protected]

Algoritmo de Cooley-Tukey

Fluxo

completo

da DFT de

8 pontos

Page 21: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

21 Carlos Alexandre Mello – [email protected]

Algoritmo de Cooley-Tukey Análise de Complexidade

Para o caso geral, mas ainda considerando N

como potência de 2, podemos continuar com a

decomposição 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

estágios, onde v = log2N

Page 22: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

22 Carlos Alexandre Mello – [email protected]

Algoritmo de Cooley-Tukey Análise de Complexidade

Para uma única decimação (N -> N/2):

N + 2(N/2)2 operações

Com mais uma decimação (N/2 -> N/4):

O termo (N/2)2 é substituído por N/2 + 2(N/4)2:

N + 2[N/2 + 2(N/4)2]

N + N + 4(N/4)2

Se N=2v,a decomposição pode acontecer

no máximo v = log2N

Page 23: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

23 Carlos Alexandre Mello – [email protected]

Algoritmo de Cooley-Tukey Análise de Complexidade

Assim, se fizermos a decomposição o maior

número de vezes possível, temos uma quantidade

total de multiplicações complexas e adições igual

a N.log2N

Page 24: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

24 Carlos Alexandre Mello – [email protected]

Algoritmo de Cooley-Tukey

Page 25: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

25 Carlos Alexandre Mello – [email protected]

Algoritmo de Cooley-Tukey

A DFT de 8 pontos teve sua computação reduzida

até DFTs de 2 pontos (N = 2):

x[0]

x[4]

WN0 = 1

W2 1= WN

N/2 = -1 WNN/2 = e-j(2/N)N/2 = e-j = -1

Page 26: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

26 Carlos Alexandre Mello – [email protected]

Algoritmo de Cooley-Tukey

O processo pode ser simplificado mais ainda...

A obtenção de um par de valores de um estágio

depende apenas de um par de valores do estágio

anterior

gráfico butterfly

Estágio m-1

WNr

WNr+ N/2

Estágio m

Como:

WNN/2 = -1

então o fator WNr+N/2 pode

ser escrito como:

WNr+N/2 = WN

N/2.WNr = -WN

r

Page 27: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

27 Carlos Alexandre Mello – [email protected]

Algoritmo de Cooley-Tukey

Isso muda o gráfico da butterfly para:

Estágio m-1

WNr

-1

Estágio m

Gráfico butterfly simplificado

Page 28: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

28 Carlos Alexandre Mello – [email protected]

Algoritmo de Cooley-Tukey

Ou seja...

28

Page 29: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

29 Carlos Alexandre Mello – [email protected]

Algoritmo de Cooley-Tukey

29

Relação

entrada-saída

dos índices...

Page 30: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

30 Carlos Alexandre Mello – [email protected]

Algoritmo de Cooley-Tukey Ordenação Bit-Reverso

Ou seja:

X0[0] = x[0]

X0[1] = x[4]

X0[2] = x[2]

X0[3] = x[6]

X0[4] = x[1]

X0[5] = x[5]

X0[6] = x[3]

X0[7] = x[7]

30

Que implica:

X0[000] = x[000]

X0[001] = x[100]

X0[010] = x[010]

X0[011] = x[110]

X0[100] = x[001]

X0[101] = x[101]

X0[110] = x[011]

X0[111] = x[111]

Page 31: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

31 Carlos Alexandre Mello – [email protected]

Algoritmo de Cooley-Tukey

A representação final do gráfico butterfly para uma

DFT de 8 pontos fica....

31

Page 32: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

32 Carlos Alexandre Mello – [email protected]

Algoritmo de Cooley-Tukey

32

Page 33: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

33 Carlos Alexandre Mello – [email protected]

Outras FFTs

Cooley-Tukey é também chamado de Radix-2

Existem Radix-4 e Radix-8

Danielson-Lanczos

Quebra em sequências de tamanho primo como uma

fatoração

Winograd

Para DFTs de N pequeno (até 16)

Re-ordena os dados de entrada e saída

Page 34: FFT Fast Fourier Transformcabm/pds/PDS_Aula07_FFT.pdf · 2020-02-20 · Carlos Alexandre Mello – cabm@cin.ufpe.br 1 FFT – Fast Fourier Transform Carlos Alexandre Mello

34 Carlos Alexandre Mello – [email protected]

FFT

Referências:

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

34