¿Realizar FFT a bajas frecuencias pero con alta resolución?

6

Para poner esto en contexto, busco lograr tanto alta velocidad como alta precisión para medir señales biológicas a través de la FFT. Describiré un ejemplo rápido para ver si entiendo esto correctamente y para ilustrar mi pregunta. Entonces, si tengo esto correctamente, si quisiera tomar una FFT de baja frecuencia, digamos frecuencias de 0-64 Hz por ejemplo, para cumplir con el criterio de Nyquist, mi frecuencia de muestreo tendría que ser al menos el doble, por lo tanto, de 128 Hz. Luego, si quisiera una resolución de frecuencia de 1 Hz a un contenedor, necesitaría 64 contenedores, lo que me pondría en 128 muestras porque hay partes reales e imaginarias. Por lo tanto, para lograr esa resolución de 1 Hz, se me presentaría con una frecuencia de muestreo de solo 128 Hz, mientras que necesito tomar 128 muestras, lo que me pondría en la posición de tener solo 1 rendimiento completo de la FFT por cada segundo de tiempo que transcurre

En última instancia, esto me lleva a mi pregunta real: a bajas frecuencias, ¿es posible tomar una FFT de alta resolución (por ejemplo, 1 o 2 Hz por recipiente) mientras se mantiene un poco de velocidad? ¿O es esto simplemente imposible debido a las limitaciones de la transformación? Si es así, ¿hay algún método alternativo o algún tipo de compromiso entre resolución y velocidad? Como nota aparte, leí un artículo hace un tiempo sobre el exceso de muestreo y el desecho de muestras en ciertos múltiplos enteros pasados por cierto punto (o algo así, lo siento, fue hace poco) para acelerar el proceso de muestreo. Tal vez alguien sepa lo que es eso (o tal vez estoy divagando en este punto). De cualquier manera, gracias por cualquier ayuda que pueda proporcionar por adelantado.

    
pregunta Scorch

4 respuestas

9

Por lo general, uno necesita adquirir varias muestras por período de forma de onda para obtener buenos resultados de una FFT. El límite de Nyquist de 2 muestras por período es un límite inferior, pero generalmente se usan prácticamente 10 muestras por período o más. Entonces, para analizar una señal de 64Hz es probable que desee adquirir muestras a una velocidad de 640Hz o más.

También (hasta cierto punto) obtendrá mejores resultados al medir señales periódicas reales si adquiere múltiples períodos de forma de onda por valor de muestras. Necesitará determinar qué tamaño de ventana tiene más sentido para su aplicación, pero para capturar señales de 1Hz sugeriría capturar alrededor de 10 segundos de datos.

Así que, básicamente, necesita adquirir muestras a una tasa alta en relación con su frecuencia más alta y durante mucho tiempo en relación con su frecuencia más baja para obtener buenos resultados. Esto obliga a que haya algún tipo de retraso en el procesamiento que será un múltiplo del período de su frecuencia más baja. Sin embargo, esto no le impide realizar ese procesamiento tan a menudo como una vez en cada muestra.

Entonces, si desea analizar los componentes de frecuencia de una señal a medida que cambia con el tiempo, y desea ver cómo se ve la FFT a una tasa alta, entonces puede tomar las muestras que necesite. Ejecutar la FFT. Desplace todas las muestras en 1 posición y luego vuelva a tomar la FFT en el siguiente tiempo de muestra.

EJEMPLO:
1) Muestra a 819,2 muestras por segundo con una ventana de tiempo de 10 s.
2) Deje que las muestras se acumulen durante 10 s (para un total de 8192 muestras)
3) Ejecute la FFT en 8192 muestras.
4) Deseche la primera muestra en el búfer y mantenga las otras 8191 muestras desplazándolas en una posición.
5) 1 / 819.2 segundos más tarde, agregue la siguiente muestra al final del búfer y vuelva a ejecutar la FFT.
6) Repita los pasos 4-6 hasta que haya completado su análisis.

Esto le daría un FFT que analiza una ventana deslizante de datos 819.2 veces por segundo

La potencia de procesamiento necesaria para el ejemplo sería aproximadamente 13 * 8192 * 819.2 Operaciones de acumulación múltiple por segundo (87 millones de MAC / s). Una PC normal podría manejar esto fácilmente. Por supuesto, puede reducir la potencia de procesamiento en un factor de N solo ejecutando las muestras FFT y N (por ejemplo, ejecutarlo cada 8 muestras solo requiere 11M MAC por segundo).

    
respondido por el user4574
12

Supongo que para "alta velocidad" significa un pequeño retraso desde la recopilación de datos hasta la FFT resultante. Con una frecuencia de muestreo baja, su capacidad computacional no es el factor limitante, dadas las computadoras modernas. El problema del retraso radica en tener suficientes datos para el análisis. Si desea que su bin de 1Hz sea diferente de DC / 0Hz, tiene que acumular suficientes datos de señal para capturar un ciclo completo de esa señal. Esta es la razón por la que, para una frecuencia de muestreo fija, un FFT más largo le brinda una resolución de frecuencia más alta.

Por lo tanto, para frecuencias muy bajas, su baja frecuencia de muestreo (128Hz) significa que tomará solo unas pocas muestras para diferenciar estas frecuencias: una FFT de 128 puntos tendrá una resolución de 1Hz y una FFT de 256 puntos tendrá 0.5Hz resolución. El problema radica en obtener esos datos. 256 puntos tardan 2 segundos en acumularse a una frecuencia de muestreo de 128Hz. Para una tasa de actualización de FFT más rápida, podría reutilizar las muestras: tome, por ejemplo, 32 muestras como bloques de datos, luego calcule una FFT de 256 puntos utilizando los 8 bloques más recientes. Luego, cuando tenga 32 muestras nuevas, puede desechar las más antiguas y actualizar la FFT 4 veces por segundo.

Esencialmente, has encontrado los compromisos necesarios para crear un espectrograma : tienes que elegir entre la resolución de frecuencia y el tiempo -localidad. (Actividad MATLAB y ejemplo aquí ) Más resolución de frecuencia requiere más muestras, por lo que su FFT representa un largo período de tiempo. Usar un lapso corto de tiempo significa usar menos muestras, lo que hace que su resolución de frecuencia FFT sea más baja. Tendrás que elegir cuál es más importante en tu aplicación.

    
respondido por el user2943160
1

Las naves DSP modernas pueden manejar fácilmente la función que usted describe; Si solo muestrea 128 veces por segundo, fácilmente podría hacer un FFT en cada muestra y cambiar una muestra por FFT.

    
respondido por el John Birckhead
1

Si su única herramienta es un martillo, cada problema parece un clavo. Creo que no entiendes lo que realmente es un FFT. Es una implementación rápida de una DFT (Transformada de Fourier discreta). La DFT es una herramienta analítica para señales discretas con una periodicidad del intervalo de análisis.

Para señales del mundo real (fuera de analizar señales de motor u otras máquinas rotativas), su intervalo de medición no corresponderá realmente a una periodicidad de la señal.

Como consecuencia, las "bandejas de frecuencia" pierden su significado y solo corresponden a las características reales de la señal a través de la lente de artefactos de ventanas y espectros de dispersión.

Si bien la eficacia de la FFT y la relación de sus funciones básicas con las funciones propias de los sistemas invariantes de cambio lineales hace probable que el caballo de trabajo bajo el capó de muchas herramientas basadas en frecuencia termine Al ser un FFT, es casi seguro que la interpretación de los resultados en bruto en términos de "bandejas de frecuencia" termine en el mejor de los casos relacionada con la realidad.

Si está intentando rastrear o caracterizar una única señal, es probable que esté mejor con algo basado en los coeficientes LPC.

    
respondido por el user113378

Lea otras preguntas en las etiquetas