Forum: Digitale Signalverarbeitung / DSP / Machine Learning Flankenerkennung Matlab


von Andi (Gast)


Angehängte Dateien:

Lesenswert?

Hi, ich suche nach einer Möglichkeit mit Matlab die Flanken vom 
beigefügten Signal zu erkennen. Die Schwierigkeit liegt darin, dass 
einzelne Pulse einen so hohen Offset besitzen, dass mancher Low-Pegel 
höher ist als der High-Pegel zu einem anderen Zeitpunkt. Mittwelwert 
bilden und einen High-Low Vergleich machen ist hier also nicht...

Hat mir jemand einen Tipp, wie man möglichst zuverlässig die Flanken 
finden kann? Vielleicht bietet Matlab ja eine Funktion die das Finden 
erleichtert.

Gruß Andi

von Matze (Gast)


Angehängte Dateien:

Lesenswert?

Moin Andi,

dein Problem ist ähnlich der Kantendetektion in der Bildbearbeitung.
Am einfachsten ist es wohl die Daten mit einem Filterkern zu Falten.
Matlab: conv(daten, filterkern, 'same')
Als Filterkern bietet sich für deine Problemstellung eine Kombination 
aus Mittelung und Differenzbildung an.
Der Filterkern schaut in etwa so aus [1,...,1,0,-1,...,-1].
Die Länge ist ungerade und auf das spezielle Problem anzupassen.
Je mehr Rauschen vorhanden ist desto größer sollte der Filter ausfallen,
wenn er jedoch zu groß wird wird irgendwann die Signalform mit raus 
gemittelt...
Ausprobieren hilft da ^^

Das Beispiel im Anhang wurde mit einem Filter der Länge 201 erstellt.

Die entstehenden "Nadeln" sind je nach steigender/fallender Flanke 
positiv oder negativ die Größe gibt Aufschluss über die Stärke des 
Anstiegs.

Hoffe das hilft weiter

Gruß Matze

von Dr. Flanke (Gast)


Lesenswert?

Alternativ das ganze Tiefpass filtern, damit sollte sich einige der 
Spikes eliminieren lassen und dann einen Median über 2-5 Werte (hab mir 
die Datei nicht angeschaut) bilden, bei den Schnittpunkten des Median 
mit deiner Kurve sollten dann die Flanken liegen.

von Dr. Flanke (Gast)


Lesenswert?

*laufenden Median

von Wolfgang (Gast)


Lesenswert?

Dr. Flanke schrieb:
> Alternativ das ganze Tiefpass filtern, damit sollte sich einige der
> Spikes eliminieren lassen und dann einen Median über 2-5 Werte

Warum willst du die Spikes erst mit dem Tiefpass breit treten. Die 
kriegt der Median bei passender Länge raus.

von Matthias (Gast)


Lesenswert?

Das verrauschte Rechtecksignal scheint mit einer weiteren langsamen 
Frequenz überlagert zu sein. Ich würde diese mit TP filtern (sollte den 
"Versatz" entfernen). Dann, falls notwendig, den höherfrequenten Noise.

Oder so wie Matze.^^

LG

von 1234567890 (Gast)


Lesenswert?

Hochpass, damit die "langsame" Überlagerung, quasi der Gleichanteil, 
raus ist. Dann wackelt das Signal um die Null herum. Über Null bedeutet 
dann 1 und unter Null bedeutet dann 0.

von Tobias P. (hubertus)


Angehängte Dateien:

Lesenswert?

So vielleicht?
nicht perfekt, aber schon mal etwas ;-) in der Bildverarbeitung nennt 
man das 'local thresholding'.

: Bearbeitet durch User
von Matthias (Gast)


Lesenswert?

Matthias schrieb:
> ... langsamen Frequenz überlagert zu sein. Ich würde diese mit TP filtern
> (sollte den "Versatz" entfernen).

Meinte HP. Im Bild oberhalb würde ich die langsame Frequenzen stärker 
dämpfen. Schau zB das Spektrum mal an.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.