2011-07-08 26 views

Respuesta

1

Como recuerdo el algoritmo de FFT no es tan complejo, solía escribir un cálculo de Clase de FFT para mi tesis. En ese momento, la entrada es una matriz 1D de valores que se leen desde los archivos * .WAV. Pero antes de FFT, se realizaron algunos filtros y se realizó una normalización.

+0

Gracias por la ayuda. ¿Puede decirme qué es salida, es un valor o una matriz? ¿Me pueden compartir el código fuente de FFT? Muchas gracias ! – thongcaoloi

+0

sí, el resultado es también una matriz 1D. –

+0

Tengo que echar un vistazo a mi disco duro de copia de seguridad si todavía tengo el código, fue hace mucho tiempo. Por favor envíeme un correo electrónico para un recordatorio. –

3

En el sentido teórico, una FFT mapea complejo [N] => complejo [N]. Sin embargo, si sus datos son solo un archivo de audio, su entrada será simplemente números complejos sin ningún componente imaginario. Por lo tanto, asignará real [N] => complejo [N]. Sin embargo, con un poco de matemática, verá que el formato de la salida siempre será la salida [i] == complex_conjugate (salida [N-i]). Por lo tanto, solo necesita mirar las primeras muestras de N/2 + 1. Además, la salida compleja de FFT le brinda información sobre la fase y la magnitud. Si todo lo que le importa es cómo tiene una frecuencia bastante alta en su audio, solo necesita mirar la magnitud, que puede calcularse como raíz cuadrada (imaginario^2 + real^2), para cada elemento de la salida .

Por supuesto, necesitará ver la documentación de cualquier biblioteca que use para comprender qué elemento de la matriz corresponde a la parte real de la enésima salida compleja, y también para encontrar la parte imaginaria de la enésima salida compleja.

22

@thongcaoloi,

La respuesta simple en cuanto a la dimensionalidad de los datos de entrada es: necesita datos 1D. Ahora explicaré lo que eso significa.

Como quiera analizar datos de audio, su entrada a la discreta transformada de Fourier (DFT o FFT) es una secuencia unidimensional de números reales que representa el voltaje cambiante de la señal de audio a lo largo del tiempo y su audio archivo es una representación digital de ese voltaje cambiante a lo largo del tiempo.

Su archivo de audio se produjo al muestrear el voltaje de una señal de audio continua a una frecuencia de muestreo fija (también conocida como la frecuencia de muestreo), normalmente 44.1 KHz para audio con calidad de CD.

Pero su archivo de datos podría haber sido muestreado a una frecuencia mucho menor, así que trate de averiguar la frecuencia de muestreo de sus datos antes de hacer una FFT con esos datos.

Ahora tiene que extraer las muestras individuales de su archivo de audio. Si su archivo es estéreo, tendrá dos secuencias de muestra separadas, una para el canal derecho y otra para el canal izquierdo. Si el archivo es mono, tendrá solo una secuencia de muestra.

Si su archivo es estéreo, o cualquier otro formato de audio multicanal como 5.1 o 7.1, puede FFT cada canal por separado, o puede combinar cualquier cantidad de canales mediante la adición de voltaje. Eso depende de usted, y depende de lo que intente hacer con sus resultados de FFT.

La salida de DFT o FFT es una secuencia de números complejos. Cada número complejo es un par que consta de una parte real y una parte imaginaria, generalmente se muestra como un par (re, im).

Si desea graficar la densidad espectral de potencia de su archivo de audio, que es lo que la mayoría de la gente quiere de la FFT, graficará 20 * log10 (sqrt (re^2 + im^2)), utilizando primeros N/2 números complejos de la salida FFT, donde N es el número de muestras de entrada a la FFT.

Puede intentar crear su propio programa de software para el analizador de espectros, pero le sugiero que utilice algo que ya está construido y probado.

Estos dos analizadores de espectro FFT dan resultados instantáneamente, y tienen síntesis IFFT incorporada, lo que significa que puede invertir la transformada de Fourier los datos espectrales del dominio de frecuencia para reconstruir la señal original en el dominio de tiempo.

http://www.mathworks.com/help/techdoc/ref/fft.html

http://www.sooeet.com/math/fft.php

Hay mucho más en este tema, y ​​con el tema de procesamiento de señales digitales en general, pero esta breve introducción, en caso de que pueda empezar.

Cuestiones relacionadas