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


67

Si he muestreado una señal utilizando métodos de muestreo adecuados (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 distinguir con precisión la diferencia entre esas dos ondas?

Respuestas:


81

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, entonces tendremos:

8192 samples2=4096 FFT bins

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:

5 kHz4096 FFT bins1.22 Hzbin

Esta puede ser la forma más fácil de explicarlo conceptualmente pero simplificada: la resolución de su contenedor es solo fsampNfsamp

Podemos ver de lo anterior que para obtener contenedores FFT más pequeños, podemos ejecutar un FFT más largo (es decir, tomar más muestras a la misma velocidad antes de ejecutar el 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, necesitamos recolectar 8192 muestras antes de poder ejecutar el FFT, que cuando el muestreo a 10 kHz toma 0.82 segundos.

Si intentamos obtener contenedores FFT más pequeños ejecutando un FFT más largo, tomaría aún más tiempo recolectar las muestras necesarias.

Eso puede estar bien, puede no estarlo. El punto importante es que a una frecuencia de muestreo fija, el aumento de la resolución de frecuencia disminuye la resolución temporal. Es decir, cuanto más precisa sea su medición en el dominio de la frecuencia, menos preciso podrá ser en el dominio del tiempo. Efectivamente, pierde 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 muestra FFT 8192 y se reproduce un tono de 2002 Hz en la segunda mitad de la ventana, veríamos ambos, pero parecerían haber ocurrido al mismo hora.

También debe considerar el tiempo de procesamiento. Un FFT de 8192 puntos requiere una potencia 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 baja su frecuencia de muestreo a algo así como 4096 Hz, entonces solo necesita una FFT de 4096 puntos para lograr contenedores de 1 Hz * 4096 Hz, entonces solo necesita una FFT de 4096 puntos para lograr contenedores de 1hz y aún puede resolver un 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 una FFT siempre habrá una compensación entre la resolución de frecuencia y la resolución de tiempo. Tienes que realizar un acto de equilibrio para alcanzar todos los objetivos.


con etiquetas de encabezado y algo de formato, esta publicación podría ir de buena a excelente. Tocaste todo lo que quería señalar, y muy bien, pero la forma en que está formateada la publicación lo leerán menos personas, ya que su longitud es prohibitiva, si le das encabezados con cada sección de lo que estás discutiendo, la gente saltará a la parte jugosa eso los combina y su número de +1 aumentará mucho. No de mí, por supuesto, como ya te lo has ganado.
Kortuk

@kurtuk Escupo esto rápidamente, limpiaré el formato cuando tenga algo de tiempo libre (o siéntase libre de editarlo si lo desea).
Mark

1
@kortuk, el nombre comienza con una 'o'. Asumí que sí, solo estaba compartiendo mi punto de vista, tanto para ti si aún no lo sabías, como para la comunidad en general.
Kortuk

1
Tenga en cuenta que no tiene que calcular la FFT. Si solo desea conocer algunos contenedores, es más barato calcular el DFT de esos contenedores, que ejecutar un FFT optimizado que calcula todos los contenedores a la vez compartiendo muchas de las operaciones.
Chris Stratton

También vale la pena señalar que una compensación de dominio de frecuencia / tiempo similar se aplica a los filtros analógicos y IIR.
Caleb Reister

10

fsNfs

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

Puede descubrir que jugar con el analizador de señal Baudline es una buena manera de desarrollar cierta intuición sobre este asunto, y no, ejecutar algunas FFT y trazar un espectro a la vez en Matlab o Python / Numpy no es 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. Básicamente es un truco similar al antialiasing en gráficos vectoriales.


¿Soy el único que no ve el código Latex con el formato correcto?
stevenvh 01 de

@stevenvh No funciona para mí también.
terraza

Funciona para mi. El látex es de solo 2 lugares.
Kortuk

2
Corregido (ya por algún tiempo). El complemento NoScript de Firefox bloqueó mathjax.org.
stevenvh

3

Vale la pena señalar que una FFT es una alternativa a la computación de varios pares de sumas (k = 0..sample_length-1) de la Muestra [k] * SineRefWave [j] [k] y la Muestra [j] * CosRefWave [j ] [k], para todo 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 calcularlas individualmente tomaría tiempo O (N ^ 2). Por otro lado, si uno solo necesita lecturas de amplitud en unas pocas frecuencias, a menudo será mejor simplemente computarlas individualmente, especialmente si está usando un procesador o DSP que puede calcular eficientemente ese estilo de suma.

También vale la pena señalar que, si bien una 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, puede usarse para medir frecuencias aisladas con una precisión más fina que la ventana de muestreo si no hay otro contenido espectral cerca. Una frecuencia solitaria de 1975Hz se captará igualmente en los contenedores de 1950Hz y 2000Hz, al igual que una combinación de tonos de 1974Hz y 1976Hz. Sin embargo, un tono aislado de 1974Hz se captaría con más fuerza en el bin de 1950Hz que en el bin de 2000Hz, y un tono de 1976Hz se captaría con más fuerza en el bin de 2000Hz.


1

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

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.


0

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


-3

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

ingrese la descripción de la imagen aquí


55
No está totalmente claro a partir de esta imagen lo que está sucediendo. (No ayuda que la imagen no esté en inglés). ¿Qué agrega esto que las otras respuestas no han mencionado?
Greg d'Eon
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.