¿Cómo seleccionar la resolución de frecuencia y el tamaño de la ventana en FFT?

Estoy haciendo un análisis de espectro de una señal variable en el tiempo con un cambio de frecuencia de 200 Hz a 10 kHz. Estoy usando la FFT para analizar el componente de frecuencia en la señal. Mis preguntas son:

  1. ¿Cómo decidir la resolución de frecuencia y el ancho de ventana de la señal?
  2. ¿Qué tipo de función de ventana es adecuada para la señal variable en el tiempo?
  3. ¿Cuál debería ser el tamaño óptimo para FFT?

La frecuencia de muestreo de la señal es de 44,1 kHz.

¿Qué es el patrón de cambio de frecuencia? ¿La señal salta abruptamente entre diferentes frecuencias o el cambio de frecuencia es continuo? Si la señal salta, ¿durante cuánto tiempo puede suponer que la señal permanecerá en la misma frecuencia? Si el cambio de frecuencia es continuo, ¿qué patrón tiene este cambio (lineal, gaussiano, otro)?
No salta, continúa variando la señal similar a la señal Chirp. la amplitud de cada frecuencia puede cambiar aleatoriamente.
Dices que estás tomando la FFT para analizar el componente de frecuencia. Este es un paso intermedio, y para responder a su pregunta con precisión, necesitamos saber qué está tratando de lograr. ¿Qué pretende hacer con esa información? ¿Por qué necesita saber el componente de frecuencia? ¿Con qué frecuencia necesita actualizar esta información? Sin contarnos estas cosas, usted es el único que puede saber cuál debe ser la resolución. De hecho, si solo necesita saber la respuesta en una o dos frecuencias, es posible que FFT ni siquiera sea la mejor manera de hacerlo.
@ScottSeidman, me leíste la mente.
Dado que está tratando con algo que probablemente al menos pueda pretender que son datos de audio, inicie una herramienta como audacity(vea el menú de importación de datos sin procesar) y pruebe las diferentes opciones y vea qué resultados le gustan más, luego haga su propia implementación. También tenga en cuenta que si bien es fácil pensar que las FFT se evalúan secuencialmente, en realidad puede superponerlas para producir un resultado con la misma frecuencia que cada muestra, en lugar de solo cada [FFTSIZE] muestras. Por supuesto, múltiples evaluaciones simultáneas aumentan la carga computacional.
Este tutorial puede ayudar. No cubre ventanas FFT superpuestas: blog.bjornroche.com/2012/07/…
@ScottSeidman, la pregunta no es específica de la aplicación, es general. La pregunta ya tiene respuesta.
@trav1s No puedo verlo. No hay nada que indique qué resolución de frecuencia se necesita en el fft. Si está tratando de hacer una imagen bonita para una prueba de orador aproximada, necesita unos cientos de puntos. Si necesita una décima parte de la resolución de Hertz, podría necesitar 100k
@ScottSeidman, la pregunta se puede responder enseñando los principios subyacentes para que el OP pueda elegir el tamaño por sí mismo. Al pedir más detalles te estás perdiendo el punto. No ayuda a los demás si resuelve los problemas caso por caso. Ayuda a los demás cuando les enseñas cómo resolver problemas.
@ trav1s, todos enseñamos de manera diferente. Si un estudiante mío viniera a mí con esta pregunta hecha de esta manera, trataría de darle el mismo mensaje para llevar a casa que estaba recibiendo con mi comentario detallado anterior: "Un ingeniero debe entender por qué él o ella está haciendo algo antes de emprenderlo". Hay miles de recursos donde uno puede encontrar las ecuaciones que describen la resolución de frecuencia como una función de N, y parecía que el que preguntaba los tenía disponibles, ¡pero ese mensaje no está adjunto a ellos! Con suerte, la insistencia hizo que el autor de la pregunta se diera cuenta de que ya tenía la respuesta.

Respuestas (2)

Dado que está trabajando con una frecuencia de muestreo fija, la longitud de su FFT (que requerirá que su ventana tenga el mismo ancho) aumentará su resolución de frecuencia. El beneficio de tener una resolución de frecuencia más fina es doble: el aparente es que obtiene una resolución de frecuencia más fina, por lo que puede distinguir dos señales que tienen una frecuencia muy cercana. La segunda es que, con una resolución de frecuencia más alta, su piso de ruido FFT será más bajo. El ruido en su sistema tiene una potencia fija, no relacionada con la cantidad de puntos de su FFT, y esa potencia se distribuye uniformemente (si hablamos de ruido blanco) a todos sus componentes de frecuencia. Por lo tanto, tener más componentes de frecuencia significa que la contribución de ruido individual de sus contenedores de frecuencia se reducirá, mientras que el ruido integrado total permanece igual. lo que resulta en un piso de ruido más bajo. Esto le permitirá distinguir un rango dinámico más alto.

Sin embargo, existen inconvenientes en el uso de una FFT más larga. La primera es que necesitará más potencia de procesamiento. La FFT es un algoritmo O(NlogN), donde N es el número de puntos. Si bien puede que no sea tan dramático como el DFT ingenuo, el aumento de N comenzará a sangrar su procesador, especialmente si está trabajando en los confines de un sistema integrado. En segundo lugar, cuando aumenta N, gana resolución de frecuencia mientras pierde resolución de tiempo. Con una N más grande, necesita tomar más muestras para llegar al resultado de su dominio de frecuencia, lo que significa que necesita tomar muestras durante más tiempo. Podrá detectar un rango dinámico más alto y una resolución de frecuencia más fina, pero si está buscando estímulos, tendrá una idea menos clara de CUÁNDO ocurrió exactamente ese estímulo.

El tipo de ventana que debe usar es un tema completamente diferente, del cual no estoy tan informado para darle una respuesta a CUÁL es mejor. Sin embargo, diferentes ventanas tienen diferentes características de salida, de las cuales la mayoría (si no todas) son posprocesamiento reversible del resultado de FFT. Algunas ventanas pueden hacer que sus componentes de frecuencia se desvanezcan en los contenedores laterales (si no me equivoco, la ventana de Hanning hace que sus componentes aparezcan en tres contenedores), otras pueden brindarle una mejor precisión de frecuencia al tiempo que introducen algún error de ganancia en sus componentes. Esto depende completamente de la naturaleza del resultado que está tratando de lograr, por lo que investigaría un poco (o algunas simulaciones) para llegar a cuál es el mejor para su aplicación específica.

Tenga en cuenta que si bien puede ser intuitivo ejecutar evaluaciones FFT en bloques secuenciales, también es posible ejecutarlas en bloques superpuestos de datos de entrada, es decir, iniciar una FFT de 1024 puntos cada 256 muestras, lo que brinda una resolución de tiempo algo mejor, aunque, por supuesto, en el costo de aún más computación.

Entonces, lo primero es lo primero, la frecuencia de muestreo debe ser al menos el doble de la frecuencia máxima de la señal que es (44.1kHz> 2x10kHz). A continuación, si la longitud de la ventana en el dominio del tiempo es T, la resolución de frecuencia con FFT es exactamente 1/T. La resolución en el dominio de la frecuencia usando la FFT no tiene nada que ver con la frecuencia de muestreo en el dominio del tiempo. Pero como se señaló en la respuesta anterior, la ventana de dominio del tiempo no puede ser demasiado grande porque perdería información sobre las señales espurias que aparecen solo momentáneamente. Así que tiene que haber un compromiso entre la resolución de frecuencia y la detección de señales espurias. Por último, FFT no es el único algoritmo que toma una señal del dominio del tiempo al dominio de la frecuencia. Si busca alta resolución en el dominio de la frecuencia con un número limitado de muestras en el dominio del tiempo, puede utilizar técnicas de estimación espectral de alta resolución como MUSIC y ESPIRIT. Estos también se utilizan para la estimación de la dirección de llegada (DOA), que es bastante similar al problema de estimación espectral.

um no... vuelve a leer nyquist. Si desea reconstruir una frecuencia de manera confiable, necesitaría 5-10x. Asimismo, una ventana más amplia permite la reconstrucción de la frecuencia más baja de interés para los subarmónicos. De todos modos, una señal espuria no se verá de manera confiable en una FFT, ya que un pulso de dirac puede tener un contenido de alta frecuencia. Su función es "aleatoria", solo se mostrará un componente confiable/periódico con una amplitud significativa.
el rango de frecuencia de la señal de interés es de 200 Hz a 10 kHz... por lo que la frecuencia de muestreo es al menos 4,41 veces la frecuencia de la señal... si observamos el extremo inferior del espectro, la frecuencia de muestreo es 220,5 veces... es posible que necesitemos saber cómo se distribuye estadísticamente la frecuencia... de todos modos, ¡creo que la frecuencia de muestreo no es un problema aquí!