Betrachten Sie die 4 folgenden Wellenformsignale:
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]
Wir bemerken, dass Signal 1 und 2 ähnlich aussehen und dass Signal 3 und 4 ähnlich aussehen.
Ich suche nach einem Algorithmus, der als Eingang n Signale verwendet und sie in m Gruppen unterteilt, wobei die Signale innerhalb jeder Gruppe ähnlich sind.
Der erste Schritt in einem solchen Algorithmus wäre normalerweise die Berechnung eines Merkmalsvektors für jedes Signal: .
Als Beispiel könnten wir den Merkmalsvektor wie folgt definieren: [width, max, max-min]. In diesem Fall würden wir die folgenden Merkmalsvektoren erhalten:
Das Wichtige bei der Entscheidung für einen Merkmalsvektor ist, dass ähnliche Signale Merkmalsvektoren erhalten, die nahe beieinander liegen, und unterschiedliche Signale Merkmalsvektoren erhalten, die weit voneinander entfernt sind.
Im obigen Beispiel erhalten wir:
Wir könnten daher den Schluss ziehen, dass Signal 2 Signal 1 viel ähnlicher ist als Signal 3.
Als Merkmalsvektor könnte ich auch die Begriffe aus der diskreten Cosinustransformation des Signals verwenden. Die folgende Abbildung zeigt die Signale zusammen mit der Approximation der Signale durch die ersten 5 Terme aus der diskreten Cosinustransformation:
Die diskreten Kosinuskoeffizienten in diesem Fall sind:
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]
In diesem Fall erhalten wir:
Das Verhältnis ist nicht ganz so groß wie für den einfacheren Merkmalsvektor oben. Bedeutet dies, dass der einfachere Merkmalsvektor besser ist?
Bisher habe ich nur 2 Wellenformen gezeigt. Das folgende Diagramm zeigt einige andere Wellenformen, die als Eingabe für einen solchen Algorithmus dienen würden. Aus jedem Peak in diesem Diagramm würde ein Signal extrahiert, beginnend mit der nächsten Minute links vom Peak und endend mit der nächsten Minute rechts vom Peak:
Zum Beispiel wurde Signal3 aus diesem Diagramm zwischen Probe 217 und 234 extrahiert. Signal4 wurde aus einem anderen Diagramm extrahiert.
Falls Sie neugierig sind; Jedes dieser Diagramme entspricht Schallmessungen durch Mikrofone an verschiedenen Positionen im Raum. Jedes Mikrofon empfängt die gleichen Signale, aber die Signale sind zeitlich leicht verschoben und von Mikrofon zu Mikrofon verzerrt.
Die Merkmalsvektoren könnten an einen Clustering-Algorithmus wie k-means gesendet werden, der die Signale mit Merkmalsvektoren nahe beieinander gruppiert.
Hat einer von Ihnen Erfahrung / Ratschläge zum Entwerfen eines Merkmalsvektors, der Wellenformsignale gut unterscheiden kann?
Welchen Clustering-Algorithmus würden Sie auch verwenden?
Vielen Dank im Voraus für alle Antworten!