Transformación rápida de Fourier de señales incompletas

4

Me gustaría realizar una FFT en una señal con valores muestreados igualmente de los que faltan algunos.

(En realidad, ni siquiera faltan, sino que simplemente son erróneas, por lo que no puedo usarlas, pero puedo detectar cuándo tengo un punto de muestreo incorrecto).

¿Hay alguna manera de compensar esos valores perdidos y obtener una buena transformación? Supongo que este es un problema frecuente, pero hasta ahora solo he encontrado esto y alguien está interpolando los valores perdidos

Por lo que yo entiendo, si mi señal es, por ejemplo, 100 HZ y las frecuencias que me importan son, por ejemplo, 5 Hz, siguiendo el teorema de Nyquist, una señal de 10Hz debería ser suficiente, por lo que podría reducir la muestra de la señal en una forma que elimina los puntos faltantes.

Entonces, mi pregunta es, ¿hay una manera de usar una transformación de Fourier (preferiblemente FFT) en una señal con valores perdidos y obtener un espectro (al menos casi) correcto para valores de frecuencia pequeños mientras se retiene la otra información? ¿Qué hay de otras transformaciones (ortogonales como wavelets, etc.), es el mismo problema o es completamente diferente?

Editar:

Gracias por todos los comentarios, definitivamente revisaré la literatura, solo esperaba que hubiera un buen punto de partida o una solución estándar que no había visto hasta ahora.

Un comentarista dijo que no proporcioné suficiente información, así que agregaré algo. El procesamiento de la señal debe ser en tiempo real (el mejor de los casos), por lo que un mayor tiempo de procesamiento sería un gran problema. Los datos no se pueden grabar continuamente y luego muestrear, ya que el método de grabación por definición utiliza el muestreo (como una cámara).

Estoy buscando una señal recurrente con una frecuencia que sea entre 15 y 100 veces más pequeña que la frecuencia de muestreo, aunque la mayoría de las veces es más o menos 20-40 veces más pequeña. Sin embargo, la señal recurrente en sí misma tiene componentes de mayor frecuencia, por lo que no se mantiene exactamente por debajo de mi frecuencia de muestreo.

Mi problema real, para el que estaba tratando de reunir ideas con esta pregunta, es que en momentos aleatorios obtengo cambios en la línea de base (inherente, no es posible una solución física). Se pueden detectar ya que son mucho más grandes que la señal real y otros están trabajando en formas de compensarlos algorítmicamente. Sin embargo, durante el análisis de la señal, a partir de ahora, tengo esos cambios en la línea de base que pueden o no suceder rápidamente.

Esos cambios pueden producir picos y matar con eficacia cualquier señal interesante o ser más o menos filtrable , hablando, por ejemplo, una señal de rampa sobreimpuesta a una parte de la señal original.

Me gustaría retener la mayor cantidad de datos posible, y mientras trato de trabajar en tiempo real, solo usar una transformación en la parte antes del cambio y otra en la parte después del cambio sería una mala solución. .

Sé el rango de frecuencia base (en el que se repite la señal) y más o menos la forma de la señal (sin embargo, no es exactamente la amplitud y la longitud, puede ser un poco más corto o más largo, dependiendo de la frecuencia de repetición). buscando.

    
pregunta DonQuiKong

3 respuestas

1

A menos que su señal tenga media cero, evitaría poner a cero las muestras faltantes porque eso introduciría un sesgo en la estimación de la media, la potencia y el espectro de la señal. En cambio, la mejor estimación de las muestras faltantes es el valor promedio de su serie de tiempo.

Sin embargo, usar la media tampoco es bueno. El subconjunto de muestras reemplazadas tendría un valor constante. Eso resolvería el problema de sesgo de estimación para el valor promedio (f = 0), pero no para el espectro restante. En otras palabras: las muestras reemplazadas no tienen las características estadísticas y espectrales requeridas.

¿Cómo podemos mejorar esto? La interpolación de las muestras faltantes es una opción.

El subconjunto de muestras interpoladas también tendrá el mismo valor promedio de la señal de interés, junto con cierta variabilidad a su alrededor. Si las muestras incorrectas están espaciadas aleatoriamente, entonces el subconjunto de muestras interpoladas tendrá una varianza (potencia) similar a la de la señal de interés.

La interpolación implica cierto grado de suavizado. Podemos pensar en eso como una especie de filtrado de paso bajo en el subconjunto de muestras interpoladas. Por lo tanto, podríamos mitigar la distorsión inducida por la interpolación con un sobremuestreo.

Hasta ahora, hemos tratado el problema a nivel de muestra. Pero hay otras opciones. Si estimamos el espectro utilizando métodos no paramétricos basados en segmentos de señal (Barlett, Welch ...), podríamos descartar los segmentos que contienen las muestras incorrectas. Los segmentos de descarte aumentarán la varianza de la estimación, pero no introducirán sesgos de estimación en ninguna frecuencia.

    
respondido por el Enric Blanco
0

Cualquier muestra que se sepa que es "incorrecta" puede simplemente ponerse a cero. De esa manera, no aportarán nada a los valores de salida, que, en definitiva, son simplemente sumas ponderadas de los valores de entrada en varias combinaciones.

Puede verificar haciendo un IFFT en los resultados y comparando con el bloque de muestras original.

    
respondido por el Dave Tweed
0

El algoritmo FFT no trata bien los huecos en los datos. Una solución es anular los datos "malos". Eso puede causar artefactos, ya que el peso estadístico de los datos 'malos' no es cero (aunque, en un cuidadoso análisis de datos, debería ser). Otra es interpolar el puntos perdidos

Sin embargo, la mejor manera de interpolar es ... hacer una transformada de Fourier lenta ponderada. No hay nada malo con, solo una vez, calcular los componentes de frecuencia de los datos que recibió, e ignorando (sin dar peso a) el regiones desaparecidas. Todo lo que necesita es un poco de tiempo extra de cálculo.

Cada componente de Fourier se calcula a partir de los puntos de datos, el punto de datos ponderaciones (cero para 'datos erróneos', o recíproco de la media cuadrada de error esperada para cada punto de 'buena información', y normalizado contra una unidad seno o coseno con los mismos pesos aplicados.

Una inversa de FFT de los componentes calculados le mostrará la "falta" Zonas reconstruidas. Otras transformaciones a conjuntos ortogonales. de funciones (como wavelets) puede de manera similar, se calcula utilizando un conjunto de ponderaciones estadísticas para diferentes Significación de los puntos de datos. También es un esquema general para fusionar datos de múltiples experimentos.

La mejor manera absoluta de hacer este tipo de cosas, depende de los datos modelo. Se usó un procedimiento llamado 'filtrado de máxima entropía' para el tratamiento borroso. Imágenes del Hubble, que fueron diseñadas para recrear desde el desenfoque un subyacente Conjunto de puntos brillantes en un fondo oscuro. Para esos datos, ese método. tiene buen sentido.

    
respondido por el Whit3rd

Lea otras preguntas en las etiquetas