Transformada Discreta De Fourier - PPT - TRANSFORMADA DE FOURIER DISCRETA PowerPoint Presentation, free ...
PPT - TRANSFORMADA DE FOURIER DISCRETA PowerPoint Presentation, free ...

O que é a transformada discreta de fourier

A transformada discreta de fourier (DFT) é um algoritmo que converte uma sequência de N amostras no domínio do tempo em N coeficientes complexos que representam as componentes de frequência do sinal. A definição matemática direta é:

Fórmula da transformada discreta de fourier

X[k] = (n=0 a N-1) x[n] · e^(-j·2·k·n/N), onde k = 0, 1, ..., N-1. O resultado é um vetor complexo de mesmo tamanho que a entrada. O módulo |X[k]| indica a amplitude da componente de frequência k, e o argumento arg(X[k]) indica a fase. A frequência associada ao índice k é f = k·fs/N, onde fs é a taxa de amostragem.

Como funciona na prática

O que a DFT faz de fato é projetar o sinal sobre bases exponenciais complexas. Cada saída X[k] mede o quanto o sinal se parece com uma senoide de frequência k. Se o sinal contém uma componente sinusoidal exatamente naquela frequência, o módulo será grande. Se não houver correspondência, o módulo tende a zero. A implementação ingênua tem complexidade O(N²). Para N=1024, isso significa cerca de um milhão de operações de multiplicação complexa. Em Python com numpy, basta chamar np.fft.fft(x) e o resultado chega em milissegundos porque a biblioteca usa uma FFT (Fast Fourier Transform), que é O(N log N).

Eu já tive um problema real com DFT em um projeto de análise de vibração de motor. Tínhamos um sinal amostrado a 50 kHz com 8192 pontos e precisávamos identificar harmônicos. O problema foi que o sinal não era peridioco dentro da janela de amostragem. Isso causava o que chamamos de "spectral leakage" — energia de uma frequência se espalhava para os bins vizinhos, mascarando harmônicos pequenos. A solução que usei foi aplicar uma janela de Hamming antes da DFT. A janela de Hamming pesa as amostras com w[n] = 0.54 - 0.46·cos(2n/(N-1)), reduzindo as descontinuidades nas bordas. O trade-off é que a resolução em frequência piora levemente, mas a supressão de vazamento vale a pena quando se busca componentes de baixa amplitude perto de sinais fortes.

Pontos importantes que poucos mencionam

A DFT assume implicitamente que o sinal é periódico com período N. Se isso não for verdade, as descontinuidades geram artefatos. Outro ponto negligenciado: a DFT produz frequências negadas simetricamente para sinais reais. Os primeiros N/2 bins representam frequências positivas, os restantes são espelhos conjugados. Uma limitação prática da DFT padrão é que a resolução em frequência é fs/N. Para distinguir duas componentes próximas, elas precisam estar separadas por pelo menos fs/N Hz. Se precisar de maior resolução sem aumentar N (que eleva custo computacional), pode usar zero-padding, que interpola o espectro mas não aumenta informação real.

O zero-padding é útil para visualizar melhor o espectro, mas muitos confundem isso com aumento de resolução. A resolução verdadeira só vem com mais amostras no tempo, não com zeros adicionados.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Implementação básica em Python

import numpy as np fs = 1000 taxa de amostragem em Hz

T = 1.0 duração em segundos N = int(fs * T)

t = np.arange(N) / fs signal = np.sin(2*np.pi*50*t) + 0.5*np.sin(2*np.pi*120*t)

X = np.fft.fft(signal) frequencies = np.fft.fftfreq(N, d=1/fs)

power = 2.0/N * np.abs(X[:N//2]) Este código gera um sinal com duas componentes senoidais (50 Hz e 120 Hz), aplica a DFT, e calcula o espectro de potência normalizado. O fator 2.0/N compensa o dobro de bins (positivos e negativos) e normaliza pela energia.

Bibliotecas recomendadas

Para uso em produção, scipy.signal.spectrogram oferece análise tempo-frequência com janelas sobrepostas. A biblioteca librosa é boa para processamento de áudio com DFT integrada. Para GPUs, cuFFT da NVIDIA acelera DFTs grandes em ORDENS DE GRANDEZA. Se o sinal tiver componente DC forte e você precisar de dinâmica ampla, considere usar fftshift para centralizar as frequências negativas no meio do espectro, facilitando visualização.

Quando NÃO usar DFT

A DFT não é ideal para sinais não-estacionários com frequência variável no tempo. Nesse caso, a transformada de wavelet ou STFT (Short-Time Fourier Transform) são alternativas melhores. A DFT também é sensível a ruído de quantização em sinais de baixa amplitude, onde o SNR pode mascarar componentes verdadeiras. Se precisar de estimação de fase precisa com ruído, métodos como MUSIC ou ESPRIT oferecem resolução super-resolvente, mas com custo computacional significativamente maior.