Algoritmos FFT para N Número Composto

Foram discutidos anteriormente os princípios básicos da decimação no tempo e da decimação na frequência para o caso especial em que N é uma potência de 2. Mais geralmente, a computação da DFT de maneira eficiente está relacionada à representação de N como um produto de fatores, sendo
 
(18)

Como visto no caso de N ser potência de 2 (onde todos os fatores podem ser feitos iguais a 2), tal decomposição leva a um algoritmo computacional altamente eficiente.

Além disso, todos os cálculos envolvidos correspondem essencialmente a DFT’s de 2 pontos. Por esta razão, tais algoritmos são particularmente fáceis de serem implementados, e frequentemente em aplicações é vantajoso trabalhar com sequências cujos tamanhos são potências de 2.

Em muitos casos, isto pode ser feito simplesmente aumentando-se a sequência com amostras nulas. No entanto, em alguns casos pode não ser possível escolher N como potência de 2, sendo então necessário considerar a situação mais geral da equação (18).

Será considerada então a aplicação de um algoritmo de decimação no tempo para o caso no qual N é um produto de fatores não necessariamente iguais a 2.

Defina-se
 

tal que.

Se N é potência de 2, pode-se escolher p1=2 e q1=N/2.

Usando a decimação no tempo, deve-se decompor a sequência x(n) em duas sequências, cada uma com tamanho N/2, consistindo uma das amostras de índice par e a outra das amostras de índice ímpar. Quando N=p1q1 , pode-se dividir a sequência de entrada em p1 sequências de q1 amostras cada, associando cada p1-ésima amostra a uma subsequência dada.

Por exemplo, se p1=3 e q1=4, tal que N=12, então pode-se decompor x(n) em três sequências de quatro amostras, com a primeira subsequência consistindo das amostras x(0), x(3), x(6), x(9); a segunda consistindo de x(1), x(4), x(7), x(10); e a terceira consistindo de x(2), x(5), x(8), x(11). Em X(k) pode ser escrito como
 
 

ou
 
(19)

As somas internas podem ser expressas como as DFT’s
 
(20)

Pois, como é facilmente verificado,
 
(21)

Assim, a equação (19) expressa X(k) em termos de p1 DFT’s de sequências de q1 amostras. Para determinar o número de multiplicações e adições complexas requeridas na implementação de DFT de acordo com a equação (19), considere que as DFT’s de q1 pontos são implementadas diretamente. Da equação (19) observa-se que o número de DFT’s de q1 pontos a serem avaliados é p1. Então um total de p1q1² multiplicações e adições complexas são requeridas. A soma externa na equação (19) é implementada multiplicando-se as DFT's de q1 pontos pelo fator , e  somando-se os resultados.

Como o somatório duplo na equação (19) tem que ser implementado para N valores de k, um total de N(p1-1) multiplicações e adições complexas são requeridas para se combinar as DFT’s de q1p1 pontos. Assim, o número total de multiplicações e adições complexas requeridas para calcular a transformada de Fourier discreta na forma dada pela equação (19) é N(p1-1)+ p1q1². Agora, as DFT’s de q1 pontos podem ser decompostas de maneira semelhante. Em particular, se representando-se q1 por
 

então as sequências de q1 pontos na soma interna na equação (19) podem ser quebradas em p2 subsequências, cada uma tendo p2 amostras, de forma que a soma interna na equação (19) pode ser substituída por um somatório duplo como feito no início. Assim, o número de operações requeridas para se computar as DFT’s de q1 pontos na equação (19) é, ao invés de q1 ²,
 
(22)

Consequentemente, o número total de multiplicações e adições complexas requerido é
 
(23)

Continuando o processo descrito acima, então quando a sequência original estiver sido decomposta ao máximo, o número de multiplicações e adições complexas requerido será
 
(24)

Por exemplo, se
 

o número de multiplicações e adições complexas requerido é N(p-1)n .

A discussão apresentada acima está longe de estar completa no sentido de que somente foram indicadas algumas das vantagens e desvantagens de se usar valores de N com fatores diferentes de 2. As vantagens básicas são o aumento da velocidade e da flexibilidade em alguns casos.; a desvantagem básica é o aumento na complexidade do algoritmo computacional. Embora tenha sido aqui discutido somente decimação no tempo, uma discussão semelhante pode ser feita para decimação na frequência.