- Fast Fourier Transform - PDS class
- Federal University of Campina Grande
- Hortencia Diniz Dultra e Silva - 05/10/23
É uma atividade que consiste na implementação da Transformada Rápida de Fourier (FFT) por decimação no Tempo, utilizando Python e o Colaboratory para executar o código.
-
As bibliotecas 'numpy' e 'matplotlib.pyplot' para realizar cálculos e plotagem, respectivamente;
-
Foi feito um teste para saber se o numero digitado estava em potência de dois, caso contrario, use o método "Zero Pad";
-
Dois arrays são criados e preenchidos com sequências pares e impares do sinal
-
A frequência de amostragem "fs" foi definida como 8KHz, que é a taxa de amostragem do sinal;
-
Foi criado um vetor de tempo t usando 'np.arange' que varia de 0 a 1 segundo com uma taxa de amostragem de 1/fs. Isso cria um vetor de tempo com pontos igualmente espaçados.
-
Foram definidas as frequências f1 e f2 como 1KHz e 2KHz, respectivamente, que são as frequências das duas senoides que compõem o sinal de entrada (este exemplo foi o mesmo utilizado para a DFT, retirado do livro de apoio).
-
Foi calculado o vetor de frequência 'frequencies' correspondente à FFT usando a função np.fft.fftfreq. Isso nos fornece um vetor de frequência que corresponde aos coeficientes da FFT.
-
A plotagem foi limitada para mostrar apenas os primeiros 0.004 segundos (4 períodos) do sinal.
-
Foi feita a IFFT - Inverse Fast Fourier Transform - para saber se o sinal reconstruído a partir da frequência gerava o sinal de inicio.
-
Por fim, comparei os gráficos que relacionam o tamanho da DFT e da FFT com o seu tempo de execução, claramente a FFT foi significativamente mais rápida.
com um sinal x(t) de entrada descrito por:
O resultado da operação de FFT é mostrado a seguir e, como esperado, a transformada de cada seno são dois impulsos, cada uma na sua respectiva frequência e amplitude pré-determinadas.
O gráfico que relaciona o tempo em relação ao tamanho da FFT é:
Aqui está o gráfico que relaciona o tempo em relação ao tamanho da DFT:
DFT e FFT têm mesmo tamanho
Nota: O código ainda requer testes para outros sinais de entrada.
Livro de apoio: Rychard G. Lyons, Understanding Digital Signal Processing, Third Edition, Chapter Three, The Discrete Fourier Transform