260 likes | 637 Views
A Transformada de Fourier Discreta. Existe uma correspondência entre sequências finitas e sequências periódicas A Transformada de Fourier Discreta de uma sequência finita, corresponde à Transformada de Fourier da Sequência periódica obtida por repetição da sequência finita.
E N D
A Transformada de Fourier Discreta • Existe uma correspondência entre sequências finitas e sequências periódicas • A Transformada de Fourier Discreta de uma sequência finita, corresponde à Transformada de Fourier da Sequência periódica obtida por repetição da sequência finita Transformada de Fourier Discreta (DFT) Série de Fourier (DFS) Transformada de Fourier (DTFT)
A Série de Fourier Discreta (DFS) Série de Fourier Discreta Inversa Série de Fourier Discreta DFS – Discrete Fourier Series
Relações da Série de Fourier Transformada de Fourier do sinal periódico Relações entre a Série de Fourier Discreta e a Transformada de Fourier Temos ainda Transformada de Fourier do sinal finito Amostras do espectro do sinal
A Transformada de Fourier Discreta (DFT) vector Matriz (dois índices) DFT- Discrete Fourier Transform
A Transformada de Fourier Discreta (DFT) A DFT corresponde a representação de x[n] numa base diferente, sendo sempre possível recuperar o sinal original.
Convolução Periódica (circular) A convolução no tempo só corresponde a multiplicação na frequência para a DFS. Para a DFT temos de utilizar a convolução circular. • Convolução periódica • Convolução circular A convolução circular é comutativa.
Convolução Periódica (circular) DCT = DTFT Amostrada aliasing no tempo
Convolução Periódica Um atraso corresponde a rodar a sequência!
Goertzel Algorithm Notar que: x[n]=0 para n<0
A Transformada Rápida de Fourier (FFT) • Fast Fourier Transform (FFT) • É uma algoritmo computacionalmente eficiente para o cálculo da DFT Requer N^2 multiplicações DFT: N log2N multiplicações FFT
Principio Básico da FFT • A DFT de um vector de dimensão N pode ser calculada à custa de duas DFT de dimensão N/2
Grapho de uma FFT Butterfly FFT DFT x[n] X[k]
Efeito do Ruído de Quantificação (virgula fixa) • Cada valor é calculado através de N-1 Butterflys • Em cada Butterfly há um arredondamento (o erro é ~ b) Ruído no resultado (pior caso): (N-1)b Ruído no resultado assumindo sinais de ruído independentes: 1 Multiplicação Complexa = 4 Multiplicações reais
Efeito do Ruído de Quantificação • Para prevenir a saturação no pior caso do resultado devemos a componente real e complexa de x[n] menor que 1/N ou seja: Ou seja duplicar N implica perder um bit de relação sinal ruído Adicionando um escalamento de ½ às butterflys da FFT reduz a relação ruído sinal (N/S) para: Para processadores de virgula flutuante: Sinais de banda larga: 4N2-2B Sinais sinusoidais: 4 log2N 2-2B
1ª divisão Xx0 (pares) Xx1 (impares) 2ª divisão X00 X10 X01 X11 3ª divisão 000 100 010 110 001 101 011 111 Ordenação de bits Invertidos Corresponde à ordenação tradicional mas com bits invertidos!! A reordenação pode ser efectuada “in place”
Outras Implementações • Decimação na frequência • Os coeficientes estão ordenados no tempo, e em ordem de bits invertidos na frequência! • Não necessita de Bit_reversed_addressing para implementar a convolução com a FFT. • Outras bases que não a dois! • Permite FFT de dimensão que não são potência de dois (sem extensão com zeros) • Pode conduzir a um menor ruído de quantificação • Implementações com ordem directa na entrada e na saída • Não permitem computação no local
Implementação • Blocos: corresponde ao cálculo de uma DFT de dimensão inferior Um loop externo para os diferentes estágios • Tamanho do bloco começa por ser dois e duplica para cada novo estádio. • Loop interno para diferentes blocos • Cálculo de half_block_size Butterflys • Os coeficientes das butterflys estão espaçados de half_block_size
Implementação da Convolução Linear com a FFT Série de Fourier Discreta convolução A convolução de uma sequência de dimensão L por uma de dimensão N resulta numa sequência de dimensão L+N-1
Implementação da Convolução Linear com a FFT • Pretendemos obter a convolução de x[n] com y[n], 0 n < N • Estende-se x[n] e y[n] com N zeros • xe[n] = [x[n], 0 ... 0], ye[n] = [y[n], 0 ... 0] • Efectua-se a convolução circular de xe[n] com ye [n] #(N+M-1) #N #M Aplicações: Overlap and Add e Overlap and Save
Implementação de filtros FIR, por blocos usando a FFT. Implementação de convolução de dois vectores de sinais (x[n] e h[n]) com um dos vectores (x[n]) muito maior que outro (h[n]). Solução: dividir x[n] em blocos: Overlap and SAVE Implementar a convolução circular de dois blocos do sinal de dados com a resposta ao impulso…. Overlap and ADD Implementar a convolução de um bloco do sinal de dados com a resposta ao impulso. Somar resultados de outros blocos. Overlap and SAVE / Overlap and ADD Desvantagem: atraso na saída
Overlap and Add Convolução linear implementada com a FFT convolução Add
Overlap and Save Convolução circular implementada com a FFT aliasing convolução Bloco errado Bloco correcto Save