Pergunta

Sou um iniciante nos conceitos de FFT e, portanto, o que entendi é que, se colocar 1024 sinais, receberei 513 bins variando de 0 Hz a 22050 Hz (no caso de uma taxa de amostragem de 44100 Hz). Usando KISS FFT no Cinder, a função getBinSize retorna os 513 valores esperados para uma entrada de 1024 sinais. O que não entendo é por que aparecem picos duplicados. Executando um teste de amostra de áudio que passa por frequências (na ordem) de 20 Hz a 22.000 Hz, vejo dois picos o tempo todo. É algo como:

<”< Budap_____<✓ < forte> __ _ __ _ __ | __ _ __

Conforme o áudio é reproduzido, os picos parecem mover-se em direção um ao outro, então o segundo pico realmente parece ser uma duplicata espelhada do primeiro. Cada exemplo que li parece simplesmente seguir em frente e plotar todos os 513 valores e eles não parecem ter esse problema de espelhamento. Não tenho certeza do que estou perdendo.

Foi útil?

Solução

Ok, depois de ler sobre isso, encontrei a solução.A razão para o espelhamento é porque eu uso um FFT em números reais (FFT real).O FFT normal, como todos sabem, funciona com números complexos.Portanto, a parte imaginária é "definida" como 0 no FFT real, resultando em um espelhamento em torno do meio (ou tecnicamente falando, o espelhamento é em torno de 0 e N / 2).

Aqui está uma discussão detalhada: http://www.edaboard.com/thread144315.html

E leia as páginas 238-242 neste livro.É fantástico, então compre.Acho que há uma versão em pdf gratuita no site do autor: http://www.dspguide.com/

Outras dicas

Você possivelmente está traçando a magnitude de todos os bins de resultado de 1024 FFT de um FFT de comprimento de 1024, mas a metade superior é apenas uma imagem espelhada da metade inferior (uma vez que a entrada somente real para um fft complexo não fornece graus suficientesde liberdade para tornar a metade superior única).

Os picos se moverão um em direção ao outro quando imagens espelhadas um do outro no centro.

Outra possibilidade é que sua FFT tivesse, de alguma forma, apenas 512 de comprimento.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top