Ich habe Mikrofone, die Schall über die Zeit an vielen verschiedenen Positionen im Raum messen. Die aufgenommenen Töne stammen alle von derselben Position im Raum, jedoch aufgrund der unterschiedlichen Pfade vom Quellpunkt zu jedem Mikrofon. Das Signal wird (zeitlich) verschoben und verzerrt. A-priori-Kenntnisse wurden verwendet, um die Zeitverschiebungen so gut wie möglich zu kompensieren, aber es gibt immer noch einige Zeitverschiebungen in den Daten. Je näher die Messpositionen sind, desto ähnlicher sind die Signale.
Ich bin daran interessiert, die Peaks automatisch zu klassifizieren. Damit meine ich, dass ich nach einem Algorithmus suche, der die beiden Mikrofonsignale in der folgenden Darstellung "betrachtet" und anhand von Position und Wellenform "erkennt", dass es zwei Haupttöne gibt, und deren Zeitpositionen meldet:
sound 1: sample 17 upper plot, sample 19 lower plot,
sound 2: sample 40 upper plot, sample 38 lower plot
Zu diesem Zweck plante ich, eine Chebyshev-Erweiterung um jeden Peak durchzuführen und den Vektor der Chebyshev-Koeffizienten als Eingabe für einen Cluster-Algorithmus (k-means?) Zu verwenden.
Als Beispiel sind hier Teile der Zeitsignale aufgeführt, die an zwei nahe gelegenen Positionen (blau) gemessen wurden, angenähert durch 5-Term-Chebyshev-Reihen über 9 Proben (rot) um zwei Peaks (blaue Kreise):
Die Annäherungen sind ziemlich gut :-).
Jedoch; Die Chebyshev-Koeffizienten für das obere Diagramm sind:
Clu = -1.1834 85.4318 -39.1155 -33.6420 31.0028
Cru =-43.0547 -22.7024 -143.3113 11.1709 0.5416
Und die Chebyshev-Koeffizienten für das untere Diagramm sind:
Cll = 13.0926 16.6208 -75.6980 -28.9003 0.0337
Crl =-12.7664 59.0644 -73.2201 -50.2910 11.6775
Ich hätte gerne Clu ~ = Cll und Cru ~ = Crl gesehen, aber dies scheint nicht der Fall zu sein :-(.
Vielleicht gibt es eine andere orthogonale Basis, die in diesem Fall besser geeignet ist?
Irgendwelche Ratschläge zur Vorgehensweise (ich benutze Matlab)?
Vielen Dank im Voraus für alle Antworten!