A Convolução Linear utilizando a DFT

Devido à existência de algoritmos eficientes para computar a Transformada Discreta de Fourier de uma sequência finita, é computacionalmente eficiente implementar a convolução de duas sequências implementando-se suas DFT’s, multiplicando-se ambas e calculando-se a transformada inversa.

Em muitas aplicações, é interessante implementar a convolução linear de duas sequências. Isto é verdade, por exemplo, quando deseja-se filtrar um sinal de radar.

Como foi visto anteriormente, a multiplicação das DFT’s de duas sequências corresponde à convolução circular das mesmas. Como é interessante ter uma convolução linear, deve-se mostrar que a convolução circular tem o efeito de uma convolução linear.
Para isso, considere duas sequências de N pontos cada, x1(n) e x2(n), e seja x3(n) a convolução linear de x1(n) e x2(n). Assim, tem-se
 

É imediato verificar que x3(n) tem tamanho 2N-1, ou seja, pode ter no máximo 2N-1 elementos não nulos. Se x3(n) for obtida multiplicando-se as transformadas de Fourier discretas de x1(n) e x2(n), então cada uma dessas transformadas, X1(k) e X2(k), também deve ter sido escrita em uma base de 2N-1 pontos. Definindo-se
 

então x3(n) será a convolução linear de x1(n) e x2(n). Claramente, uma convolução linear também poderia ser obtida se as DFT’s forem computadas em uma base com mais de 2N-1 pontos, mas não poderia em geral ser atingida se as DFT’s fossem computadas em uma base com menos de 2N-1 pontos.

Em geral deseja-se convoluir duas sequências de tamanhos diferentes. Se x1(n) tem tamanho N1 e x2(n) tem tamanho N2, então a convolução de x1(n) e x2(n) terá tamanho

N1+N2-1. Deve-se então, nesse caso, multiplicar as transformadas de Fourier discretas computadas em uma base de, no mínimo, N1+N2-1 pontos.

O procedimento acima permite o cálculo da convolução linear de duas sequências finitas utilizando-se a Transformada Discreta de Fourier. Em algumas aplicações, deseja-se convoluir uma sequência finita com uma sequência de duração indefinida, como por exemplo, quando filtra-se um sinal de voz.. Teoricamente, pode-se armazenar todo o sinal e então implementar o processo descrito acima. No entanto, a DFT a ser computada será muito grande. Assim, quando deseja-se filtrar um sinal x(n) de grande duração, deve-se dividir tal sinal em seções de tamanho L, convoluir cada seção com a resposta impulsional finita, e então pôr juntas as seções filtradas da maneira apropriada.

Tal técnica de filtragem em blocos pode então ser implementada utilizando-se a Transformada Discreta de Fourier.