I have microphones measuring sound over time at many different positions in space. The sounds being recorded all originate from the same position in space but due to the different paths from the source point to each microphone; the signal will be (time) shifted and distorted. A priori knowledge has been used to compensate for the time shifts as good as possible but still some time shift exist in the data. The closer the measurement positions are the more similar the signals are.
I am interested in automatically classifying the peaks. By this I mean that I am seeking an algorithm that "looks" at the two microphone signals in the plot below and "recognize" from position and waveform that there are two main sounds and report their time positions:
sound 1: sample 17 upper plot, sample 19 lower plot, sound 2: sample 40 upper plot, sample 38 lower plot
In order to do this I was planning to do a Chebyshev expansion around each peak and use the vector of Chebyshev coefficients as input to a cluster algorithm (k-means?).
As an example here are parts of the time signals measured at two nearby positions (blue) approximated by 5 term Chebyshev series over 9 samples (red) around two peaks (blue circles):
The approximations are quite good :-).
However; the Chebyshev coefficients for the upper plot are:
Clu = -1.1834 85.4318 -39.1155 -33.6420 31.0028 Cru =-43.0547 -22.7024 -143.3113 11.1709 0.5416
And the Chebyshev coefficients for the lower plot are:
Cll = 13.0926 16.6208 -75.6980 -28.9003 0.0337 Crl =-12.7664 59.0644 -73.2201 -50.2910 11.6775
I would like to have seen Clu ~= Cll and Cru ~= Crl, but this does not seem to be the case :-(.
Maybe there is another orthogonal basis that is more suited in this case?
Any advice on how to proceede (I am using Matlab) ?
Thank in advance for any answers!