(Moderator)
Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
Delphi 2007 Enterprise
|
Unscharfe Mustererkennung
2. Nov 2009, 21:16
Hi ho,
Ich habe zwei Signale (A und B). B kopiert die Signale von A, allerdings zeitversetzt und mehr oder weniger synchron. Ich muss nun die zeitliche Distanz zwischen den beiden Signalen A und B herausbekommen.
Beispiel:
A liefert: 1-2-1-1-5-8-7-9-1-1-1-1
B liefert: 2-1-2-2-1-2-1-2-2-1-6-7-2-7-2-1-1
Die rot markierten 'Peaks' möchte ich erkennen, sowie den Abstand (6 Einheiten) herausbekommen. Da das ganze kontinuierlich vonstatten geht, kann ich mir Umfangreiche Berechnungen nicht leisten.
Bitte beachtet: Erstens ist das gedoppelte Signal bei 'B' keine 1:1 Kopie und zweitens kann ein einzelner Wert komplett ausfallen (Sequenz 5-8-7-9, also 4 Peaks vs. 6-7-2-7 (2 Peaks, Rückfall, 1 Peak).
Ich könnte z.B. einfach das 'X' wählen, für das die Summe (A[i] - B[i-X])^2 minimal ist. Das müsste passen, aber leider etwas aufwändig. Zumal ich auch Zeiten habe, bei denen ich gar keine Auffälligkeit in beiden Signalen habe. Nur wenn eben mal etwas bei 'A' passiert, dann auch garantiert etwas später bei 'B'. Und diese Differenz möchte ich automatisch berechnen und zudem immer wieder anpassen.
Ach, die Peaks, also die relevanten Signale sind schon deutlich, ich kann also eine minimale Differenz D_min = A[i+1] - A[i] definieren bzw. vorgeben.
Ich dachte an eine Art Filter:
Wenns bei A rumpelt, dann merke ich mir den Zeitstempel und ignoriere bis auf Weiteres weitere Rumpler bei A.
Wenn es dann bei B rumpelt, habe ich meine Zeitdifferenz und lasse Rumpler bei 'A' wieder zu.
Jetzt muss man nur noch 'Rumpeln' definieren...
Hat jemand eine pfiffige Idee, wie man so eine Art 'unscharfe Mustererkennung' hinbekommt?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
|