Em matemática, a transformada discreta de Fourier (DFT) converte uma sequência finita de amostras igualmente espaçadas de uma função em uma sequência de mesmo comprimento de amostras igualmente espaçadas da transformada de Fourier em tempo discreto (DTFT), que é uma função complexa da frequência. O intervalo no qual é amostrada é o recíproco da duração da sequência de entrada. Uma DFT inversa (IDFT) é uma série de Fourier que usa as amostras da DTFT como coeficientes de onda senoidal complexa nas frequências da DTFT correspondentes. Ela possui os mesmos valores amostrais que a sequência de entrada original. Portanto, diz-se que a DFT é uma representação no domínio da frequência da sequência de entrada original. Se a sequência original abrange todos os valores diferentes de zero de uma função, sua DTFT é contínua (e periódica), e a DFT fornece amostras discretas de um ciclo. Se a sequência original é um ciclo de uma função periódica, a DFT fornece todos os valores diferentes de zero de um ciclo da DTFT.
A DFT é utilizada na análise de Fourier de muitas aplicações práticas. No processamento digital de sinais, a função é qualquer grandeza ou sinal que varia ao longo do tempo, como a pressão de uma onda sonora, um sinal de rádio ou leituras diárias de temperatura, amostradas em um intervalo de tempo finito (frequentemente definido por uma função de janela). No processamento de imagens, as amostras podem ser os valores de pixels ao longo de uma linha ou coluna de uma imagem raster. A DFT também é utilizada para resolver eficientemente equações diferenciais parciais e para realizar outras operações, como convoluções ou multiplicação de números inteiros grandes.
Como lida com uma quantidade finita de dados, pode ser implementado em computadores por algoritmos numéricos ou mesmo por hardware dedicados. Essas implementações geralmente empregam algoritmos eficientes de transformada rápida de Fourier (FFT); tanto que os termos "FFT" e "DFT" são frequentemente usados indistintamente. Antes de seu uso atual, o acrônimo "FFT" também pode ter sido usado para o termo ambíguo "transformada finita de Fourier".
Definição Denotamos, em geral, a transformada discreta de Fourier (DFT) por .
A DFT transforma uma sequência de N números complexos em outra sequência de números complexos, . Defina os vetores como:
O conjunto forma uma base ortogonal para , isto é:
Assim, qualquer vetor pode ser escrito como uma combinação linear dos vetores :Onde são os coeficientes dados por:Essa mudança de base é chamada de Transformada Discreta de Fourier e a matriz que a representa é dada por:Observe que são os coeficientes na base canônica e são os coeficientes na nova base.
Uma consequência da ortogonalidade é que , isto é:Assim, a DFT é uma transformação linear invertível e sua inversa é chamada de Transformada Discreta Inversa de Fourier (IDFT). Exemplo A matriz de Fourier no caso em que , tem a raiz da unidade , podendo ser escrita em termos das potências de .
Aproveitando a periodicidade , a matriz pode ser simplificada. Substituindo os valores numéricos, onde , , etc., obtemos a matriz explícita:
Por inspeção, podemos ver que essa matriz é simétrica, que é uma das propriedades que vale para essa transformada.
Aliasing na Transformada Discreta de Fourier
Em processamento de sinais, o fenômeno conhecido como aliasing ocorre quando diferentes componentes espectrais se sobrepõem na Transformada Discreta de Fourier (DFT), causando distorção no espectro obtido.
Considere uma função real periódica de período 1, expressa pela série de Fourier:
Sejam as amostras definidas pelo vetor :
Note que , de modo que a amostra em é redundante.
A transformada discreta de Fourier da função base satisfaz:
Portanto, a componente -ésima da DFT do vetor pode ser escrita como:
Como é real, os coeficientes satisfazem a relação de conjugação complexa:
Assim, as componentes de frequência cujos índices diferem em múltiplos de se somam na TDF, fenômeno conhecido como aliasing ou superposição espectral.Proakis, J. G.; Manolakis, D. G. Digital Signal Processing: Principles, Algorithms, and Applications. 4ª edição. Pearson, 2006.
Condição para ausência de aliasing
Para evitar o aliasing, é necessário que os coeficientes sejam nulos para todos os índices fora do intervalo fundamental , isto é:
Essa condição significa que a função é limitada em banda, com frequências menores que a frequência de Nyquist . Sob essa hipótese, a DFT captura corretamente o espectro sem sobreposição.Smith, S. W. The Scientist and Engineer's Guide to Digital Signal Processing. California Technical Publishing, 1997.
Transformada inversa da Transformada Discreta de Fourier
A transformada inversa da Transformada Discreta de Fourier (TDF) é uma operação matemática fundamental no domínio do processamento digital de sinais, cuja finalidade é reconstruir uma sequência temporal finita a partir de sua representação no domínio da frequência. Essa operação é particularmente importante em sistemas de comunicação, análise espectral, compressão de dados e síntese de sinais.
Seja uma sequência complexa de comprimento , correspondente à TDF de uma sequência temporal discreta . A transformada inversa da DFT é definida formalmente por:
Essa equação constitui a transformada inversa no contexto da DFT, sendo o operador que desfaz a transformação direta, cujo formato é dado por:
As transformadas direta e inversa são simétricas, exceto pela inversão do sinal no expoente e pela presença do fator de normalização na fórmula da inversa. Tal fator garante que a operação de reconstrução mantenha a energia da sequência original e assegura a unicidade da inversa, desde que a TDF tenha sido aplicada sob a mesma convenção de normalização.
A transformada inversa pode ser interpretada como uma decomposição da série de Fourier discreta no tempo, reconstituindo cada valor de como uma combinação linear ponderada de senos e cossenos complexos. Na prática computacional, a transformada inversa da TDF é frequentemente implementada utilizando algoritmos eficientes, como a Transformada Rápida de Fourier Inversa (IFFT), que reduz significativamente o custo computacional da operação.Oppenheim, A. V.; Schafer, R. W.; Buck, J. R. (1999). Discrete-Time Signal Processing. 2ª ed. Upper Saddle River, NJ: Prentice Hall. ISBN 978-0-13-754920-7.Proakis, J. G.; Manolakis, D. G. (2006). Digital Signal Processing: Principles, Algorithms, and Applications. 4ª ed. Upper Saddle River, NJ: Prentice Hall. ISBN 978-0-13-187374-2.
A correta aplicação da transformada inversa é essencial para garantir a fidelidade na reconstrução de sinais digitais após processos de filtragem, modulação, ou transformação espectral.
Propriedades
Linearidade Sejam e as transformadas de Fourier discretas de e , respectivamente. Para quaisquer números complexos , defina como:
A DFT de é obtida como:
Translação Seja a transformada de Fourier discreta de . Defina um sinal deslocado como:Em que é um inteiro que representa o deslocamento.
A DFT de é derivada fazendo a substituição de variável :
Modulação Seja a transformada de Fourier discreta de , defina como:Em que é um número inteiro. Temos:
Aqui os índices e devem ser interpretados como números inteiros módulo .
Assim, a modulação de um sinal por desloca os coeficientes da DFT de para as posições e .
Convolução Sejam e as transformadas de Fourier discretas de e . Defina a convolução circular como:A DFT de é derivada como:
Multiplicação Sejam e as transformadas de Fourier discretas de e . Defina o sinal como o produto ponto a ponto de e :A DFT de é derivada substituindo as fórmulas da Transformada de Fourier Inversa (IDFT) para e :A soma interna sobre é igual a se for um múltiplo de , e 0 caso contrário. Isso nos permite simplificar a expressão:Assim, a multiplicação ponto a ponto no domínio do tempo corresponde à convolução circular (escalada por ) no domínio da frequência.
Correlação
Sejam e as transformadas de Fourier discretas de e . Defina a correlação cruzada circular como:Onde é o conjugado complexo de .
A DFT de é derivada como:Fazendo a substituição de variável na soma interna:Substituindo este resultado de volta:Assim, a correlação cruzada no domínio do tempo corresponde à multiplicação ponto a ponto do espectro de um sinal pelo conjugado complexo do espectro do outro.
Simetria conjugada Se é um vetor de números reais, então:Ou seja, o coeficiente da DFT de na posição é o conjugado do coeficiente na posição .
Demonstração
Observação Um sinal real pode ser reconstruído a partir de coeficientes da DFT.
Tipos da transformada discreta de Fourier Sinal sinusoidal Caso 1 Seja com e defina o vetor como:
A transformada de Fourier discreta deste vetor é dada por:
Assim, temos que:
Observação se com inteiro, então a DFT não depende de m.
Caso particular: frequência inteira Se é um número inteiro, então:
Observação Seja a transformada de Fourier discreta do vetor definido acima, então, como
Caso 2 No caso com , temos:
Se, como no exemplo anterior, é definido como:
Temos:
Caso particular: frequência inteira Se é um número inteiro, então:
Real Definição Trabalharemos com real e n ímpar. Seja e os vetores dados por:
Defina a nova base dada por:
Agora temos:
Do lema, temos que , logo:
onde,
assim,
onde,
Aplicações A DFT tem sido amplamente utilizada em inúmeros campos; apresentamos apenas alguns exemplos abaixo. Todas as aplicações da DFT dependem crucialmente da disponibilidade de um algoritmo rápido para calcular transformadas discretas de Fourier e suas inversas, uma transformada rápida de Fourier.
Exemplo de algoritmo para a FFT Este código apresenta uma implementação da Transformada Rápida de Fourier (FFT) utilizando o método recursivo de Cooley–Tukey. A FFT é, essencialmente, um algoritmo de 'dividir para conquistar' que otimiza o cálculo da Transformada de Fourier Discreta (DFT), tornando sua execução em computadores muito mais rápida e viabilizando seu uso em uma vasta gama de aplicações.# Bibliotecas essenciais para a execução do programa import cmath import math import numpy as np
# Função FFT recursiva (transformada rápida de fourier) # 'a' -> array de entrada | 'invert' -> 1 para FFT, -1 para IFFT def fft(a, invert): n = len(a)
# Caso base da recursão: um único elemento if n == 1: return
# Divisão # Separa o array em elementos de índice par (a_0) e ímpar (a_1) n_2 = n // 2 a_0 = np.array([a[2 * i] for i in range(n_2)], dtype=np.complex128) a_1 = np.array([a[2 * i + 1] for i in range(n_2)], dtype=np.complex128)
# Conquista # Chama a função recursivamente para as duas metades fft(a_0, invert) fft(a_1, invert)
# Combinação # Combina os resultados das metades para obter a transformada completa omega_n = cmath.exp(2 * math.pi * 1j / n * invert) # Raiz da unidade omega = 1.0 + 0.0j # Fator de torção w^k
for i in range(n_2): # Operação "Borboleta": calcula os termos da DFT t = omega * a_1[i] a[i] = a_0[i] + t a[i + n_2] = a_0[i] - t
# Normalização necessária apenas para a transformada inversa if invert == -1: a[i] /= 2 a[i + n_2] /= 2
# Atualiza o fator de torção para a próxima iteração omega *= omega_n
Análise espectral