Cómo detectar cambios "rápidos" en el procesamiento de señales

12

Estoy trabajando en un proyecto donde medimos la capacidad de soldadura de los componentes. La señal medida es ruidosa. Necesitamos procesar la señal en tiempo real para que podamos reconocer el cambio que comienza en el momento de 5000 milisegundos.

Mi sistema toma una muestra de valor real cada 10 milisegundos, pero se puede ajustar a un muestreo más lento.

  1. ¿Cómo puedo detectar esta caída a 5000 milisegundos?
  2. ¿Qué opinas sobre la relación señal / ruido? ¿Deberíamos enfocarnos y tratar de obtener una mejor señal?
  3. Existe el problema de que cada medida tiene resultados diferentes y, a veces, la caída es incluso menor que este ejemplo.

Señal de muestra Señal de muestra 2 Señal de muestra 3

Enlace a archivos de datos (no son los mismos que los utilizados para las parcelas, pero muestran el último estado del sistema)

  1. https://docs.google.com/open?id=0B3wRYK5WB4afV0NEMlZNRHJzVkk
  2. https://docs.google.com/open?id=0B3wRYK5WB4afZ3lIVzhubl9iV0E
  3. https://docs.google.com/open?id=0B3wRYK5WB4afUktnMmxfNHJsQmc
  4. https://docs.google.com/open?id=0B3wRYK5WB4afRmxVYjItQ09PbE0
  5. https://docs.google.com/open?id=0B3wRYK5WB4afU3RhYUxBQzNzVDQ
Petr
fuente
55
Parece que tiene una relación señal / ruido relativamente pequeña. Como con la mayoría de los problemas de detección, querrá considerar el equilibrio entre la probabilidad de detectar correctamente la característica que indicó y la probabilidad de declarar falsamente que existe. ¿Cuál es más importante para tu aplicación? ¿Tiene algún requisito de latencia de detección?
Jason R
2
El 'ruido' se parece más a una interferencia en una frecuencia particular. Si este es el caso (una gráfica de espectro ayudará), entonces el filtrado apropiado hará la mayor parte del trabajo.
Juancho
En realidad, la detección de esta característica es muy importante. Pero puedo vivir con algo de latencia, pero necesito ajustar la posición final de parada, porque no sé exactamente dónde toca la pieza la soldadura, y necesito controlar la profundidad de inmersión. Entonces, por ejemplo, si sé que la inmersión debe ser de 0,5 mm, calculo la posición teórica de acuerdo con el tamaño ideal del glóbulo de soldadura, pero luego necesito hacer la corrección para el tamaño real de un glóbulo que detecto al tacto: aparece como un cambio en la fuerza.
Petr
Toda la herramienta de medición se encuentra en resortes, por lo que puede moverse libremente, pero también produce el ruido y también tenemos resortes fijos para todo el rango de mediciones, y por supuesto, estos problemas aparecen cuando se usa la sensibilidad más alta, donde las fuerzas medidas son terriblemente pequeño.
Petr
Juancho: tal vez esto podría ayudar, pero ¿cómo puedo resolverlo para diferentes pesos de partes, lo que resulta en diferentes frecuencias? Además, este componente cambia cuando la pieza se sumerge en la soldadura, ya que el proceso de humectación reduce el nivel de ruido, pero esto ocurre solo en piezas más grandes, aquí es casi lo mismo cuando está dentro o fuera.
Petr

Respuestas:

4

Normalmente marco este problema como uno de detección de pendientes. Si calcula una regresión lineal sobre una ventana en movimiento, la caída ilustrada será visible como un cambio significativo en el signo de pendiente y / o magnitud. Este enfoque ofrece una serie de factores que requerirán "ajuste": por ejemplo, la frecuencia de muestreo, el tamaño de la ventana, etc., afectarán la robustez (resistencia al ruido) del detector de señal de pendiente. Aquí es donde se pueden aplicar algunos de los comentarios anteriores. Cualquier filtrado o supresión de ruido que pueda aplicarse antes del ajuste de línea mejorará sus resultados.

Retroceso1986
fuente
2

He hecho este tipo de cosas calculando una estadística T de la media de la parte izquierda de los datos frente a la parte derecha de los datos. Esto supone que sabes dónde está el punto de transición, que por supuesto no sabes.

Entonces, lo que debe hacer es probar varios cientos de puntos de partición a lo largo del eje de tiempo y encontrar el que tenga la estadística T más significativa.

u_left, u_right : mean of left and right portion
s_left, s_right : SD of left and right portion
n_left, n_right : number of samples on left and right (subtract one from each for the one degree of freedom)

se = sqrt(s_left^2 / n_left^2 + s_right^2 / n_right^2)
T = (u_left - u_right) / se

Puede hacer esto como algo así como una búsqueda binaria. Pruebe 10 puntos de datos, encuentre los dos más grandes, luego intente 10 puntos entre ellos, etc. De esta manera podría obtener un punto de transición bastante preciso. No estoy reclamando precisión. :-)

¡Háganos saber cómo va!

PD: Puede calcular la media y la desviación estándar como sumas en ejecución, lo que reduce la complejidad de calcular esta función de partición para todas las posibilidades de N ^ 2 a N. Haciendo esto, probablemente pueda permitirse calcular la estadística T en cada punto de partición posible.

MattD
fuente