Considere las 4 siguientes señales de forma de onda:
signal1 = [4.1880 11.5270 55.8612 110.6730 146.2967 145.4113 104.1815 60.1679 14.3949 -53.7558 -72.6384 -88.0250 -98.4607]
signal2 = [ -39.6966 44.8127 95.0896 145.4097 144.5878 95.5007 61.0545 47.2886 28.1277 -40.9720 -53.6246 -63.4821 -72.3029 -74.8313 -77.8124]
signal3 = [-225.5691 -192.8458 -145.6628 151.0867 172.0412 172.5784 164.2109 160.3817 164.5383 171.8134 178.3905 180.8994 172.1375 149.2719 -51.9629 -148.1348 -150.4799 -149.6639]
signal4 = [ -218.5187 -211.5729 -181.9739 -144.8084 127.3846 162.9755 162.6934 150.8078 145.8774 156.9846 175.2362 188.0448 189.4951 175.9540 147.4631 -89.9513 -154.1579 -151.0851]
Notamos que las señales 1 y 2 se parecen y las señales 3 y 4 se parecen.
Estoy buscando un algoritmo que tome como entrada n señales y las divida en m grupos, donde las señales dentro de cada grupo son similares.
El primer paso en dicho algoritmo generalmente sería calcular un vector de características para cada señal: .
Como ejemplo, podríamos definir que el vector de características sea: [ancho, máximo, máximo-mínimo]. En cuyo caso obtendríamos los siguientes vectores de características:
Lo importante al decidir sobre un vector de características es que las señales similares obtienen vectores de características que están cerca uno del otro y las señales diferentes obtienen vectores de características que están muy separados.
En el ejemplo anterior obtenemos:
Por lo tanto, podríamos concluir que la señal 2 es mucho más similar a la señal 1 que la señal 3.
Como vector de características también podría usar los términos de la transformada discreta del coseno de la señal. La siguiente figura muestra las señales junto con la aproximación de las señales por los primeros 5 términos de la transformada discreta del coseno:
Los coeficientes discretos del coseno en este caso son:
F1 = [94.2496 192.7706 -211.4520 -82.8782 11.2105]
F2 = [61.7481 230.3206 -114.1549 -129.2138 -65.9035]
F3 = [182.2051 18.6785 -595.3893 -46.9929 -236.3459]
F4 = [148.6924 -171.0035 -593.7428 16.8965 -223.8754]
En este caso obtenemos:
La relación no es tan grande como para el vector de características más simple anterior. ¿Significa esto que el vector de características más simple es mejor?
Hasta ahora solo he mostrado 2 formas de onda. La siguiente gráfica muestra algunas otras formas de onda que serían la entrada a dicho algoritmo. Se extraería una señal de cada pico en este gráfico, comenzando en el minuto más cercano a la izquierda del pico y deteniéndose en el minuto más cercano a la derecha del pico:
Por ejemplo, la señal 3 se extrajo de este gráfico entre las muestras 217 y 234. La señal 4 se extrajo de otro gráfico.
En caso de que tengas curiosidad; cada parcela corresponde a mediciones de sonido por micrófonos en diferentes posiciones en el espacio. Cada micrófono recibe las mismas señales, pero las señales cambian ligeramente en el tiempo y se distorsionan de un micrófono a otro.
Los vectores de características podrían enviarse a un algoritmo de agrupamiento como k-means que agruparía las señales con vectores de características cercanas entre sí.
¿Alguno de ustedes tiene alguna experiencia / consejo sobre el diseño de un vector de características que sería bueno para discriminar las señales de forma de onda?
Además, ¿qué algoritmo de agrupamiento usarías?
Gracias de antemano por cualquier respuesta!
Respuestas:
¿Desea solo criterios objetivos para separar las señales o es importante que tengan algún tipo de similitud cuando alguien las escucha? Eso, por supuesto, debería restringirlo a señales un poco más largas (más de 1000 muestras).
fuente