Detección y cálculo de pendientes y picos en tiempo real

9

Tengo una señal de que pruebo a 500khz. Estoy tratando de detectar un aumento, una caída y el pico en los datos entrantes. La base del pico podría ser de 250 usec o 2.5msec, la amplitud podría ser de 6db o 15db por encima del nivel de ruido. No tengo buen snr lamentablemente. El nivel de CC de la señal no es constante, pero se mueve mucho más lento que el componente de CA.  

En el punto de decisión, necesito saber la pendiente del ascenso y la caída. Este es un sistema difícil en tiempo real y realmente necesito tomar una decisión en el uso de 100 después de que la pendiente descendente alcance el nivel de CC. 

Estoy buscando sugerencias de cómo puedo implementar eficientemente un algoritmo que sea decente.  

Actualmente hago un promedio móvil (pasados ​​25 puntos de datos sumados) e intento detectar la tendencia. Una vez que detecto la tendencia hacia arriba, comienzo a buscar la tendencia hacia abajo y una vez que lo hago, recojo quizás otras 50 muestras y empiezo a calcular. 

El ruido ahora atornilla fácilmente este algoritmo, de ahí la pregunta. 

Actualizar

Para beneficio de otros, terminé implementando una media móvil seguida de integrador. El promedio móvil de los últimos 64 datos se suavizó lo suficiente, pero perdió el aumento en un grado, integrando los últimos 8 valores recuperados del aumento y simplemente busco el aumento y la caída, luego hice una regresión lineal para la pendiente. Funciona bien, no muy bien, pero está bien.

Ktuncer
fuente
¿Puedes publicar un diagrama de una secuencia de datos en la que falla tu algoritmo actual?
Jim Clay
Hacer este tipo de cosas a pesar del ruido significativo es bastante difícil. La sugerencia de Juancho de un diferenciador es probablemente buena.
Daniel R Hicks

Respuestas:

5

Debe comenzar con un diferenciador de banda ilimitada (equivalente a un diferenciador seguido de un filtro de paso bajo). El diferenciador eliminará la tendencia de baja frecuencia y responderá bruscamente a sus picos y pendientes. El componente de paso bajo eliminará el ruido más allá de la frecuencia de corte.

Debe diseñar su frecuencia de corte para obtener pulsos limpios para sus pendientes.

Las pendientes positivas disminuirán como pulsos positivos; pendientes negativas como pulsos negativos, y el pico corresponderá al cruce por cero entre positivo y negativo.

Este tipo de filtro normalmente se implementa como un filtro FIR. El número de muestras para su filtro dependerá de sus restricciones en tiempo real, la nitidez en la frecuencia de corte y la frecuencia de corte en sí.

Juancho
fuente
No estoy muy versado con DSP. ¿Me puede indicar una posible implementación? Según su respuesta y mi conocimiento limitado, creo que el enlace ( holoborodko.com/pavel/numerical-methods/numerical-derivative/… ) hace exactamente lo que usted menciona. Si tuviera que usar tal enfoque, no sé 1) ¿Cómo determinar mis frecuencias? 2) ¿Cómo seleccionar los coeficientes de filtro?
Ktuncer
Además, el siguiente enlace resuelve un problema similar y contiene un buen grupo de enlaces. dsprelated.com/showmessage/123740/1.php
Ktuncer