Relación entre tamaño FFT, tasa de muestreo y tamaño de búfer

4

Estoy haciendo esta pregunta porque quiero asegurarme de que entiendo la relación de la longitud de FFT, la tasa de muestreo y el tamaño del búfer. Esta pregunta es con respecto a la biblioteca DSP de CMSIS, aunque imagino que podría ser cualquier función de procesamiento FFT.

Debido a las restricciones de configuración, mi ADC está muestreando a una velocidad de 10.68kps. Luego, estoy tomando el promedio de 4 muestras para terminar a una velocidad de 2.67 kbps. Necesito una resolución de 0.5Hz para señales de 100Hz a 300Hz. Así que aquí está la parte que me falta: no entiendo a qué frecuencia de muestreo necesito escalar para conservar correctamente la información de frecuencia. Por ejemplo, si quisiera ejecutar una FFT de 1024 de longitud, ¿a qué frecuencia de muestreo debería escalar y qué tamaño de búfer debo pasar a la función FFT?

Lo tengo funcionando, pero la información del contenedor no es del todo correcta; por ejemplo, sale de 1 bin a 100Hz, pero 2 bin a 300Hz. Estoy seguro de que está relacionado con la tasa de muestreo impar. ¿Necesito una frecuencia de muestreo que sea igual a la longitud de FFT? ¿Y cómo afecta el tamaño del búfer pasado en la operación?

Gracias por cualquier respuesta.

    
pregunta user10326

2 respuestas

7

Hay una relación directa, y en realidad bastante simple, entre todas las figuras.

Comencemos con el tamaño de la muestra. Usted obtiene la mitad de los contenedores (o "cubos") ya que tiene muestras en su conjunto. Por ejemplo, si tienes 1024 muestras, obtienes 512 contenedores. Tan simple como eso.

Ahora para la frecuencia de muestreo. La frecuencia máxima es la mitad de la frecuencia de muestreo (consulte teorema de muestreo de Nyquist-Shannon ). Entonces, si tiene una frecuencia de muestreo de 2.67 kps, entonces su rango de frecuencia es 0-1.335 kHz.

De nuevo, bastante sencillo, solo otra división por dos.

Ahora, los intervalos se reparten uniformemente en el rango de frecuencia, por lo que sus 512 intervalos, más de 1355 Hz, son 2.607421875 Hz por contenedor.

Para 0,5Hz por contenedor hasta 300Hz, desea 600 contenedores. Su frecuencia de muestreo objetivo sería 600Hz. La forma en que disminuya la muestra depende de usted.

La mayoría del código FFT que he visto funciona en 2 tamaños de muestra n , por lo que 600 contenedores no son un buen número. Eso sería 1200 muestras, no 2 n . Así que probablemente querrá redondearlo a 2 11 , o 2048 muestras. Eso le daría 1024 contenedores, y desearía una frecuencia de muestreo de 1024sps para un rango de 0-512Hz.

    
respondido por el Majenko
0

Asegúrese de comprender las siguientes relaciones:

fs = 1 / dt

fs / N = 1 / (N * dt)

df = 1 / (N * dt)

df * dt = 1 / N

Esto significa que el producto del espaciado en el dominio del tiempo y el espaciado en el dominio de la frecuencia es una constante (1 / N). Aumentar el espaciado en el dominio del tiempo puede disminuir el espaciado en el dominio de la frecuencia mientras se mantiene 'N' para que sea constante. Sin embargo, debe tener cuidado con 'dt', ya que su inversa es la frecuencia de muestreo 'fs', que debe ser al menos el doble de la frecuencia de la señal.

    
respondido por el Yasir Ahmed

Lea otras preguntas en las etiquetas