Eu tenho microfones medindo o som ao longo do tempo em muitas posições diferentes no espaço. Todos os sons gravados são originários da mesma posição no espaço, mas devido aos diferentes caminhos do ponto de origem para cada microfone; o sinal será (tempo) alterado e distorcido. Um conhecimento a priori tem sido usado para compensar as mudanças de tempo da melhor maneira possível, mas ainda existe alguma mudança de tempo nos dados. Quanto mais próximas as posições de medição, mais semelhantes os sinais.
Estou interessado em classificar automaticamente os picos. Com isso, quero dizer que estou procurando um algoritmo que "observe" os dois sinais de microfone no gráfico abaixo e "reconheça" da posição e da forma de onda que existem dois sons principais e relate suas posições de tempo:
sound 1: sample 17 upper plot, sample 19 lower plot,
sound 2: sample 40 upper plot, sample 38 lower plot
Para fazer isso, planejava fazer uma expansão de Chebyshev em torno de cada pico e usar o vetor dos coeficientes de Chebyshev como entrada para um algoritmo de cluster (k-means?).
Como exemplo, aqui estão partes dos sinais de tempo medidos em duas posições próximas (azul) aproximadas pela série Chebyshev de 5 termos em 9 amostras (vermelhas) em torno de dois picos (círculos azuis):
As aproximações são bastante boas :-).
Contudo; os coeficientes de Chebyshev para o gráfico superior são:
Clu = -1.1834 85.4318 -39.1155 -33.6420 31.0028
Cru =-43.0547 -22.7024 -143.3113 11.1709 0.5416
E os coeficientes de Chebyshev para o gráfico inferior são:
Cll = 13.0926 16.6208 -75.6980 -28.9003 0.0337
Crl =-12.7664 59.0644 -73.2201 -50.2910 11.6775
Eu gostaria de ter visto Clu ~ = Cll e Cru ~ = Crl, mas este não parece ser o caso :-(.
Talvez haja outra base ortogonal mais adequada neste caso?
Algum conselho sobre como proceder (estou usando o Matlab)?
Agradeço antecipadamente por todas as respostas!