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 bins≃1.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.
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.
fuente
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.
fuente
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.
fuente
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.
fuente
mira esta foto está vacío. relación entre resolución fs y fft
fuente