Olá Henrique
Discutimos isto na monitoria de ontem. Em princípio o que a Transformada Discreta de Fourier (DFT) faz é mudar o domínio de tempo para o domínio das frequências. Isto significa que ela irá gerar um array aonde as posições do array seriam relativas as frequências que os mesmos podem representar.
Sendo bastante simplista, se seu array de entrada tivesse 44100 amostras, por exemplo, e no mesmo tivéssemos apenas uma senóide de 440hz, no array de saída teríamos quase todos valores do vetor de saída com 0 e na posição 440, a amplitude da senóide (lembrando que a amplitude tem de ser calculada com a parte imaginária e complexa). Ou seja saida[0] = 0, saida[1] = 0, saida[2] = 0, ..., saida[440] = algum valor, saida[441] = 0, saida[442] = 0, ...
Como o nosso vetor de entrada possui menos de 44100 amostras, é necessário calcular a frequencia fundamental (f0) que seria o primeiro valor representado. A conta desta f0 está na descrição do EP.
Uma vez calculado o f0, basta multiplicar pelo k das posições do array de saída e teremos assim as k frequencias de saída.Chegando neste ponto só falta calcular a fase relativa para afirmarmos com precisão qual a frequência de cada amostra.
Na nossa implementação criamos um array auxiliar com k posições e colocamos valores de 0 a k no mesmo para calcular a frequência. A f0 é simples de ser calculada. A fase também está explicada na descrição do EP e será calculada na saída da FFT.
Acho que é isto. Espero ter ajudado. Abraços.
Schiavoni