¿Cuál es la relación entre la longitud de FFT y la resolución de frecuencia?

61

Si he muestreado una señal utilizando métodos de muestreo apropiados (Nyquist, filtrado, etc.), ¿cómo relaciono la longitud de mi FFT con la resolución de frecuencia resultante que puedo obtener?

Como si tuviera una onda sinusoidal de 2.000 Hz y 1.999 Hz, ¿cómo determinaría la longitud de FFT necesaria para determinar con precisión la diferencia entre esas dos ondas?

    
pregunta Kellenjb

6 respuestas

74

La resolución de frecuencia depende de la relación entre la longitud de FFT y la frecuencia de muestreo de la señal de entrada.

Si recolectamos 8192 muestras para la FFT, tendremos:

$$ \ frac {8192 \ \ text {samples}} {2} = 4096 \ \, \ text {contenedores FFT} $$

Si nuestra frecuencia de muestreo es de 10 kHz, entonces el teorema de muestreo de Nyquist-Shannon dice que nuestra señal puede contener contenido de frecuencia de hasta 5 kHz. Entonces, nuestra resolución de bin de frecuencia es:

$$ \ frac {5 \ \ text {kHz}} {4096 \ \, \ text {contenedores FFT}} \ simeq \ frac {1.22 \ \ text {Hz}} {\ text {bin}} $$

Esta puede ser la forma más fácil de explicarlo conceptualmente pero simplificada: la resolución de su bin es simplemente \ $ \ frac {f_ {samp}} {N} \ $, donde \ $ f_ {samp} \ $ es la entrada la frecuencia de muestreo de la señal y N es el número de puntos FFT utilizados (longitud de la muestra).

Por lo que antecede, podemos ver que para obtener contenedores FFT más pequeños, podemos ejecutar una FFT más larga (es decir, tomar más muestras a la misma velocidad antes de ejecutar la FFT) o disminuir nuestra frecuencia de muestreo. .

La captura:

Siempre hay una compensación entre la resolución temporal y la resolución de frecuencia.

En el ejemplo anterior, debemos recopilar 8192 muestras antes de poder ejecutar la FFT, que cuando se muestrea a 10 kHz toma 0.82 segundos.

Si intentáramos obtener bandejas FFT más pequeñas ejecutando una FFT más larga, llevaría incluso más tiempo recopilar las muestras necesarias.

Eso puede estar bien, puede no estarlo. El punto importante es que a una tasa de muestreo fija, el aumento de la resolución de frecuencia disminuye la resolución temporal. Cuanto más precisa sea su medición en el dominio de la frecuencia, menos precisa podrá estar en el dominio del tiempo. Usted pierde efectivamente toda la información de tiempo dentro de la longitud de FFT.

En este ejemplo, si un tono de 1999 Hz comienza y se detiene en la primera mitad de la FFT de muestra de 8192 y se reproduce un tono de 2002 Hz en la segunda mitad de la ventana, veríamos ambas, pero parece que se han producido. al mismo tiempo.

También tienes que considerar el tiempo de procesamiento. Una FFT de 8192 puntos tiene un poder de procesamiento decente. Una forma de reducir esta necesidad es reducir la frecuencia de muestreo, que es la segunda forma de aumentar la resolución de frecuencia.

En su ejemplo, si reduce su frecuencia de muestreo a aproximadamente 4096 Hz, entonces solo necesita una FFT de 4096 puntos para alcanzar intervalos de 1 Hz * 4096 Hz, entonces solo necesita una FFT de 4096 puntos para lograr depósitos de 1 Hz y puede Todavía se resuelve una señal de 2khz. Esto reduce el tamaño del contenedor FFT, pero también reduce el ancho de banda de la señal.

En última instancia, con un FFT siempre habrá una compensación entre la resolución de frecuencia y la resolución de tiempo. Tienes que realizar un poco de un acto de equilibrio para alcanzar todos los objetivos.

    
respondido por el Mark
10

La resolución FFT básica es \ $ f_s \ sobre N \ $, donde \ $ f_s \ $ es la frecuencia de muestreo.

La capacidad de diferenciar dos señales muy espaciadas depende en gran medida de las amplitudes relativas y de la función de ventana utilizada.

Es posible que jugar con el analizador de señales Baudline sea una buena forma de desarrollar una intuición sobre este asunto, y no, correr Algunos FFT y el trazado de un espectro a la vez en Matlab o Python / Numpy no son lo mismo.

EDITAR: También hay un truco para rellenar la entrada con ceros y tomar una FFT más grande. No mejorará su capacidad de diferenciación, pero puede hacer que el espectro sea más legible. Es básicamente un truco similar al antialiasing en gráficos vectoriales.

    
respondido por el jpc
3

Vale la pena señalar que una FFT es una alternativa al cálculo de varios pares de sumas (k = 0..sample_length-1) de Sample [k] * SineRefWave [j] [k] y Sample [j] * CosRefWave [j] [k], para todos j hasta la mitad de la longitud de la muestra. Si uno necesita lecturas de amplitud en todas esas frecuencias, una FFT las calculará todas en tiempo O (NlgN), mientras que su cálculo individual tomaría tiempo O (N ^ 2). Por otro lado, si solo necesita lecturas de amplitud en unas pocas frecuencias, a menudo será mejor que las calculemos individualmente, especialmente si utiliza un procesador o DSP que puede calcular de manera eficiente ese estilo de suma.

También vale la pena señalar que, si bien es un FFT con, por ejemplo, una ventana de muestreo de 20 ms no podrá distinguir entre un solo tono de 1975Hz o una combinación de frecuencias (1975-N) Hz y (1975 + N) Hz para N < 25, se puede usar para medir frecuencias aisladas con precisión Más fino que la ventana de muestreo si no hay otro contenido espectral cerca. Una única frecuencia de 1975Hz se recuperará por igual en las bandejas de 1950Hz y 2000Hz, al igual que una combinación de tonos de 1974Hz y 1976Hz. Sin embargo, un tono de 1974Hz aislado se recuperaría más fuertemente en el bin de 1950Hz que en el de 2000Hz, y un tono de 1976Hz se recuperaría más fuertemente en el bin de 2000Hz.

    
respondido por el supercat
1

La resolución de frecuencia no depende de la longitud de FFT, sino de la duración del tiempo total de muestreo T, es decir, es 1 / T, que es también el componente de frecuencia más bajo que obtuviste.

Tenga en cuenta que el relleno cero no aumenta la resolución de frecuencia; La DFT de la señal de relleno cero es simplemente una mejor aproximación de la DTFT de la señal original.

    
respondido por el chaohuang
0

Si conoce el rango de posibles frecuencias de entrada y el rango es estrecho, puede aplicar el submuestreo para reducir el número de muestras y el tiempo para calcular la FFT. Con 256 muestras y una frecuencia de muestreo de 256 Hz, obtiene la resolución deseada de 1 Hz y un ancho de banda sin alias de 128 Hz.

    
respondido por el Rainald62
-3

mira esta foto. está vacío. relación entre fs y resolución fft

    
respondido por el hamid

Lea otras preguntas en las etiquetas