Pregunta

Soy un principiante con los conceptos de FFT y lo que entiendo es que si pongo 1024 señales, obtendré 513 bins que van desde 0hz a 22050Hz (en el caso de una frecuencia de muestreo de 44100Hz). Usando KISS FFT en Cinder, la función getBinSize devuelve los 513 valores esperados para una entrada de 1024 señales. Lo que no entiendo es por qué aparecen picos duplicados. Al ejecutar una muestra de audio de prueba que pasa por frecuencias (en orden) de 20Hz a 22000Hz, veo dos picos todo el tiempo. Se parece a algo así:

<×_____<× < fuerte> __ _ __ _ __ | __ _ __

A medida que se reproduce el audio, los picos parecen moverse entre sí, por lo que el segundo pico realmente parece ser un duplicado del primero. Cada ejemplo por el que he pasado parece seguir adelante y trazar los 513 valores y no parecen tener este problema de duplicación. No estoy seguro de lo que me estoy perdiendo.

¿Fue útil?

Solución

Ok, después de leer sobre esto encontré la solución.La razón de la duplicación es porque utilizo una FFT en números reales (FFT real).La FFT normal, como todo el mundo sabe, funciona con números complejos.Por lo tanto, la parte imaginaria se "establece" en 0 en la FFT real, lo que da como resultado un reflejo en el medio (o técnicamente hablando, el reflejo es alrededor de 0 y N / 2).

Aquí hay una discusión detallada: http://www.edaboard.com/thread144315.html

Y lea las páginas 238 - 242 de este libro.Es fantástico, cómprelo.Creo que hay una versión en pdf gratuita en el sitio web del autor: http://www.dspguide.com/

Otros consejos

Es posible que esté trazando la magnitud de todos los contenedores de resultados de 1024 FFT de una FFT de 1024 de longitud, pero la mitad superior es solo una imagen reflejada de la mitad inferior (dado que la entrada solo real a una fft compleja no proporciona suficientes gradosde libertad para hacer que la mitad superior sea única).

Los picos se moverán uno hacia el otro cuando se reflejen imágenes entre sí sobre el centro.

Otra posibilidad es que su FFT de alguna manera solo tenga una longitud de 512.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top