Tengo un sistema que muestrea una entrada analógica y quiero filtrar ese valor utilizando un filtro sencillo de primer orden. EG algo de la forma:
Yn = A\*Xn + B\*Yn-1
Sin embargo, no tengo ningún control sobre el proceso subyacente y el período de muestreo no es uniforme, y varía (aleatoriamente) en algún lugar entre 25ms y 29ms. Además quiero usar una constante de tiempo de 30 minutos, y no puedo mantener un buffer de 72.000 valores de muestra.
Dado que la implementación de un filtro típico requiere un periodo de muestreo uniforme, ¿existe algún algoritmo sencillo que tenga en cuenta la diferencia de tiempo entre Yn-1 y Xn? (que supongo que en realidad significa una versión variable en el tiempo de mis "constantes" A y B)
Tenga en cuenta que estoy inclinado a simplemente tomar el tiempo de muestreo promedio durante un período prolongado y el uso que para calcular mis constantes, sin embargo, también existe la posibilidad de que el sistema final no se ejecuta en la misma tasa promedio como mi sistema de prueba, así que quiero llegar a una solución que es algo adaptable.
responder a las preguntas
- La señal filtrada se utiliza como parte de un sistema de control de vibraciones en algunos equipos industriales. Se utilizará más con fines cualitativos que cuantitativos.
- Los requisitos del cliente son una media móvil de 30 minutos para los datos.
- Tengo cero control sobre la frecuencia de muestreo.
- Y la frecuencia de muestreo varía cada segundo
- Y la frecuencia de muestreo define la velocidad a la que se ejecuta mi código
- El sistema final debería funcionar más o menos a la misma velocidad que mi sistema de prueba, aunque podría ser algo más lento, tal vez hasta una velocidad de 35 ms.