Tengo micrófonos que miden el sonido a lo largo del tiempo en muchas posiciones diferentes en el espacio. Todos los sonidos que se graban se originan en la misma posición en el espacio pero debido a las diferentes rutas desde el punto de origen a cada micrófono; la señal será (tiempo) desplazada y distorsionada. El conocimiento a priori se ha utilizado para compensar los cambios de tiempo lo mejor posible, pero todavía existe algún cambio de tiempo en los datos. Cuanto más cercanas son las posiciones de medición, más similares son las señales.
Estoy interesado en clasificar automáticamente los picos. Con esto quiero decir que estoy buscando un algoritmo que "mire" las dos señales de micrófono en la gráfica a continuación y "reconozca" desde la posición y la forma de onda que hay dos sonidos principales e informa sus posiciones de tiempo:
sound 1: sample 17 upper plot, sample 19 lower plot,
sound 2: sample 40 upper plot, sample 38 lower plot
Para hacer esto, estaba planeando hacer una expansión de Chebyshev alrededor de cada pico y usar el vector de los coeficientes de Chebyshev como entrada para un algoritmo de clúster (¿k-medias?).
Como ejemplo, aquí hay partes de las señales de tiempo medidas en dos posiciones cercanas (azul) aproximadas por 5 series de Chebyshev a lo largo de 9 muestras (rojo) alrededor de dos picos (círculos azules):
Las aproximaciones son bastante buenas :-).
Sin embargo; Los coeficientes de Chebyshev para la gráfica superior son:
Clu = -1.1834 85.4318 -39.1155 -33.6420 31.0028
Cru =-43.0547 -22.7024 -143.3113 11.1709 0.5416
Y los coeficientes de Chebyshev para la gráfica inferior son:
Cll = 13.0926 16.6208 -75.6980 -28.9003 0.0337
Crl =-12.7664 59.0644 -73.2201 -50.2910 11.6775
Me gustaría haber visto Clu ~ = Cll y Cru ~ = Crl, pero este no parece ser el caso :-(.
¿Quizás hay otra base ortogonal que es más adecuada en este caso?
¿Algún consejo sobre cómo proceder (estoy usando Matlab)?
Gracias de antemano por cualquier respuesta!