|
|
Mustererkennung in 2 Signalen |
|
WhiteShadow |
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 31.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 28.02.2012, 20:30
Titel: Mustererkennung in 2 Signalen
|
|
|
|
|
Hallo alle zusammen,
ich hoffe Ihr könnt mir bei einem kleinen Problem helfen. Und zwar habe ich 2 Signale gegeben. Nun gibt es im ersten Signalen einen Bereich der recht ähnlich ist, wie im anderen Signal aber bei verschiedenen Zeitpunkten liegen. Ca. 1/50 Länge vom Gesamtsignal.
Meine Ideen um diesen Bereich zu erkennen:
1.
Zuerst dachte ich an Kreuzkorrelationsfunktion, aber die bewertet mir ja nur die Signale als Ganzes und sagt mir leider nicht, welcher Bereich in den 2 Signalen WO Ähnlich sind, oder liege ich hier falsch?
2.
Meine 2te Idee. Ich verschiebe das 2te Signal einfach immer nach links/rechts und subtrahiere das 2te vom 1ten Signal. Dabei sollte bei den Ähnlichen Bereichen ein Minimum entstehen.
Also wenn ich mir dieses entstehende Signal in Matlab plotten lasse, kann ich es recht gut erkennen mit freiem Auge, nur WIE könnte ich das mathematisch noch herausfinden. Ich meine, Mittelwert über das gesamte Signal und schauen, ob der Bereich unterm Mittelwert liegt ist ein nicht sehr guter Ansatz. Was könntet Ihr da empfehlen. Ich würde diesen Bereich (StartIndex - EndIndex) vom ersten und zweiten Signal benötigen
3.
Oder habt Ihr eine performantere Idee wie man ein Muster erkennen könnte was sehr schnell geht?
Wäre über jede Idee dankbar .
lg
|
|
|
|
|
WhiteShadow |
Themenstarter
Forum-Newbie
|
|
Beiträge: 4
|
|
|
|
Anmeldedatum: 31.05.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 04.03.2012, 16:45
Titel:
|
|
So,
Ok, also das mit dem subtrahieren brachte keinen Erfolg. Das gesamte Signal ist doch zu ähnlich um daraus was zu erkennen. Die Signale sind ziemlich gut aligned mit der KKF.
Im Signal gibt es 1 Pattern, dass ich erkennen will/muss (ziemlich am Anfang). Mit dem Auge kann man es relativ gut erkennen weil es das einzige markante Signal is das nur einmal vorkommt. Aber mathematisch steh ich gerade an. Ich will das ein wenig verallgemeinern.
Meine Idee: Autokorrelation (das Signal mit sich selbst korrelieren) und daraus was erkennen...
Habt Ihr vlt andere Ideen? Wäre wirklich über jede Hilfe froh
|
|
|
Ajax |
Forum-Century
|
|
Beiträge: 176
|
|
|
|
Anmeldedatum: 09.09.10
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.03.2012, 08:32
Titel:
|
|
Hallo WhiteShadow,
wie sieht denn der Bereich deines Signals aus, der nicht mit dem 2. Signal "übereinstimmt". Ist das hauptsächlich Rauschen oder liegt da auch Signal vor, nur sieht es eben anders aus als die 2. Kurve? Wenn es hauptsächlich Rauschen ist, dann könntest du evtl. mit der FFT arbeiten und die Phase als Verschiebung des Signals benutzen (bin mir allerdings nicht sicher, ob das wirklich so klappt, wie ich mir das jetzt vorstelle).
Eine sehr sehr langsame Methode wäre natürlich auch, wenn du einfach die KKF von allen (möglichen) Abschnitten des Signals 1 mit dem Signal 2 berechnest und dir da den größten Wert heraussuchst. Gerade bei langen Signalen wird das aber sicher eine sehr lange Berechnung...
mfg
|
|
|
Kevin |
Forum-Fortgeschrittener
|
|
Beiträge: 93
|
|
|
|
Anmeldedatum: 18.08.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 05.03.2012, 10:15
Titel:
|
|
Hi,
da ich nicht weiß, wie die Signale aussehen, kann ich jetzt auch nur völlig allgemein antworten.
So weit ich das Problem verstehe musst du eine Kurvendiskussion der Daten durchführen und dann die Ergebnisse in erlaubte und verbotene Parameter sortieren (also das Programm mach das). Auch die Integrale zwischen den Nullstellen sind oft aussagekräftig.
Wenn du dein Signal mal als Plot hochlädst, kann ich mir vielleicht vorstellen, worauf du hinaus willst und spezieller antworten.
Gruß
Kevin
_________________
1000 Buchstaben? Warum nur 6?
|
|
|
aj.geissler |
Forum-Guru
|
|
Beiträge: 251
|
|
|
|
Anmeldedatum: 26.11.07
|
|
|
|
Wohnort: Seeheim-Jugenheim
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 07.03.2012, 13:44
Titel:
|
|
Hi,
eine Möglichkeit ist, die Signale durch Teilbereichs-Betrachtung zu analysieren. Beispielsweise liegen zwei vektoren mit den Signalen vor, Länge z.B. 1000
Mittels reshape dann 50 Teilsegmente á 20 Werte erzeugen.
Man hat jetzt 2 Matrizen mit 50 Spalten und 20 zeilen.
Korrelationskoeffizient zwischen den einzelnen Spalten der beiden Matrizen berechnen. Man erhält eine Matrix mit 50 Zeilen und 50 Spalten, die symmetrisch zur Hauptdiagonalen ist. Jetzt nach dem abs. Maximum suchen. Wenn das in Zeile N und Spalte M liegt, dann korreliert der N-te Abschnitt des einen Signals mit dem M-ten Abschnitt des 2. Signals.
Diese beiden Teilsegmente rechts und linken mit Nullen auffülen und mittels Kreuzkorrelation die genaue verschiebung berechnen.
Wie du schon gesagt hast: Die Korrelation erfolgt global. Daher könntest Du evtl. mit einem Wavelet-Ansatz versuchen, die partielle Ähnlichkeit in Abschnitten zu ermitteln.
Grüße
Andreas
|
|
|
NNLab |
Forum-Fortgeschrittener
|
|
Beiträge: 59
|
|
|
|
Anmeldedatum: 11.10.11
|
|
|
|
Wohnort: Frankfurt am Main
|
|
|
|
Version: 7.12.0
|
|
|
|
|
|
Verfasst am: 29.03.2012, 15:47
Titel:
|
|
Hallo Andreas,
dein Ansatz würde mich auch interessieren, doch leider weiß ich nicht wie ich das Umsetzen müsste.
Hast du da was, was in die Richtung gehen würde?
Gruß
|
|
|
aj.geissler |
Forum-Guru
|
|
Beiträge: 251
|
|
|
|
Anmeldedatum: 26.11.07
|
|
|
|
Wohnort: Seeheim-Jugenheim
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 30.03.2012, 12:48
Titel:
|
|
Hi,
die "Segmentierung" kann relativ einfach mit Hilfe der Matlab-Funktion "reshape" erfolgen.
Die einzelnen Spalten können dann mit dem Befehl
corrcoef korreliert werden.
Man erhält dann eine symmetrische Diagonalmatrix mit Einsen auf der Hauptdiagonale.
Die Indices des Matrixelements mit größtem Wert ausserhalb der Hauptdiagonalen kennzeichen die Kurvensegmente, die am ähnlichsten zueinander sind.
Viele Grüße
Andreas
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2024
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|