Usamos una tarjeta de adquisición de datos para tomar lecturas de un dispositivo que aumenta su señal a un pico y luego vuelve a acercarse al valor original. Para encontrar el valor máximo, actualmente buscamos en la matriz la lectura más alta y usamos el índice para determinar el tiempo del valor máximo que se usa en nuestros cálculos.Detección de picos de la señal medida
Esto funciona bien si el valor más alto es el pico que estamos buscando, pero si el dispositivo no está funcionando correctamente, podemos ver un segundo pico que puede ser mayor que el pico inicial. Tomamos 10 lecturas por segundo de 16 dispositivos durante un período de 90 segundos.
Mi idea inicial es recorrer las lecturas para ver si los puntos anterior y siguiente son menores que los actuales para encontrar un pico y construir una matriz de picos. Quizás deberíamos mirar un promedio de varios puntos a cada lado de la posición actual para permitir el ruido en el sistema. ¿Es esta la mejor manera de proceder o hay mejores técnicas?
Hacemos uso de LabVIEW y he comprobado el LAVA forums y hay una serie de ejemplos interesantes. Esto es parte de nuestro software de prueba y estamos tratando de evitar el uso de demasiadas bibliotecas VI no estándar, así que esperaba recibir comentarios sobre el proceso/algoritmos involucrados en lugar de un código específico.
Wow, gracias por toda esta información. He aplicado varias de estas tácticas (mal) para secar y resolver mi problema de detección de picos, pero voy a ver mejor el punto 1. Gracias por esta gran cantidad de datos. John. –
Esta respuesta tiene información agnóstica del idioma mucho mejor, en particular, sé que el código de recetas numéricas que se adapta a un gaussiano funciona bien, ya que lo usamos aquí en el trabajo en la salida FFT. – Brendan
Con respecto a "+ k para una k adecuadamente pequeña", ¿k es un valor constante para todos los cálculos? ¿Cómo lo eliges? ¿Qué significa adecuadamente pequeño? – Loren