AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Unscharfe Mustererkennung

Ein Thema von alzaimar · begonnen am 2. Nov 2009 · letzter Beitrag vom 3. Nov 2009
Antwort Antwort
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#1

Unscharfe Mustererkennung

  Alt 2. Nov 2009, 20: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")
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: Unscharfe Mustererkennung

  Alt 2. Nov 2009, 20:28
Ich würde jetzt mal folgendes vorschlagen:

Wenn bei A ein Peak anfängt (Differenz zu vorhergehenden 1 bis 2 Werten größer als ein d) alle werte aufsummieren. Wenn der Peak wieder abfällt aufhören zu summieren. Wenn du über einen gewissen Grenzwert gekommen bist ("Das Signal hatte eine zeitlang eine gewisse Mindesthöhe") dann war das ein "Rumpler" (Deine Bezeichnungen sind zu geil )

Das gleiche bei B. Wenn die Signale ungefähr passen, sollte ungefähr die gleiche Fläche dabei rauskommen. So +/- 10% oder so als Toleranz und die Erkennung sollte funktionieren.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.007 Beiträge
 
Delphi 12 Athens
 
#3

Re: Unscharfe Mustererkennung

  Alt 2. Nov 2009, 20:41
Vielleicht liegt es ja an deinem Beispiel, aber wenn man immer drei Werte addiert (sehr einfache Glättung), sehen deine Reihen so aus:

A: 4, 4, 7, 14, 20, 24, 17, 11, 3, 3
B: 5, 5, 5, 5, 4, 5, 5, 5, 9, 14, 15, 17, 11, 10, 4

Ich habe mal als Schwellenwert 10 angenommen - damit sind die Rumpler und deren Dauer gut zu ermitteln. Ob man nun den Anfang oder den Mittelpunkt des jeweiligen Rumplers nimmt, muss die Praxis zeigen. Den Zeitpunkt eines solchen Rumplers in A schreibt man vielleicht in eine Queue, die dann von B als Vergleich herangezogen wird. Die Frage der Synchronisierung ist damit allerdings noch nicht gelöst. Eventuell kann man eine der besagten Ruhezeiten heranziehen um die Queue zu resetten.
Uwe Raabe
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Unscharfe Mustererkennung

  Alt 2. Nov 2009, 20:44
@jfheins: Das mit der Fläche ist gut. Ich zeichne gerade Testdaten auf und werde morgen mal die Flächengeschichte testen.
@Uwe: Das Beispiel hab ich mir ausgedacht, denn die Testdaten sind im Büro. Das Aufsummieren, um Einzelpeaks herauszufiltern, könnte auch klappen.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Unscharfe Mustererkennung

  Alt 2. Nov 2009, 20:56
Wäre sowas nicht ein klassisches Einsatzgebiet für eine Fuzzy Logic? (Was jfheins beschrieb kommt dem sogar prinzipiell relativ nahe.)
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#6

Re: Unscharfe Mustererkennung

  Alt 3. Nov 2009, 06:54
suche nach "Matched Filter" und "Korrelation" denn das ist genau das was du brauchst. Es hängt nun von deinen Signalströmen ab.
Eines der Signale musst du in einer "Zeitschleife" zwischenbuffern. Dieser Buffer, ein FIFO, ist dein Vergleichsmuster. Dessen Speichertiefe minus maximale detektierbare Musterlänge bestimmt den maximal detektierbaren Musterabstand. Der Matched Filter ist ein digitaler Filter und wird oft in DSPs eingesetzt. Normalerweise wird man den mit fixiertem Muster betreiben. Er bekommt den Signalstrom sequentiell und erzeugt einen Amplitudenwert der anzeigt wie stark das Signal mit dem Muster übereinstimmt. Wird dessen Muster nun aus einem FIFO hergezogen, der FIFO selber mit einem Signalstrom gefüllt, dann hast du einen Sliding Window Korrelator.
Ein Problem kann uU. die Frage werden in welchem Signalstrom kam das übereinstimmende Muster zuerst vor, also die Bestimmung der Phasenlage des Signales in Relation zum Referenzsignal.
In jedem Falle wird es rechenointensiv, denn mit jedem Sample wird ein Vergleich von Musterlänge Samples nötig. Das kann man mit einer FFT, Fourier Transformation um einen gewissen Faktor beschleunigen.
Über Wikipedia kannst du dich durch die ganze Materie hangeln.

[edit]
Phasenkorrelation wäre noch so ein Stichwort, kam nicht drauf
[/edit]

Gruß Hagen
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#7

Re: Unscharfe Mustererkennung

  Alt 3. Nov 2009, 07:02
Das ist dann Stoff für die nächsten Wochen...

Danke!
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz