WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Rauschen nach Ableitung

 

Tobi92
Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 05.12.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.02.2020, 01:22     Titel: Rauschen nach Ableitung
  Antworten mit Zitat      
Hallo,

ich habe ein digitales Signal und brauche davon die zweite Ableitung. Dafür habe ich zweimal die Funktion gradient benutzt. Hier mein Code dazu:

Code:

x = ursprüngliches Signal
t = Zeitvektor

xp = gradient(x) ./ gradient(t);

xpp = gradient(xp) ./ gradient(t);


Wie auf dem Bild zu sehen, ist die zweite Ableitung nicht zu gebrauchen. Ich habe mit smooth rumgespielt und viel getestet, aber es wurde leider nicht viel besser. Hat jemand von euch ein paar Tipps für mich?

Viele Grüße
Tobi

test.png
 Beschreibung:

Download
 Dateiname:  test.png
 Dateigröße:  50.54 KB
 Heruntergeladen:  221 mal
Private Nachricht senden Benutzer-Profile anzeigen


Tobi92
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 05.12.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.02.2020, 09:03     Titel:
  Antworten mit Zitat      
Kann mir keiner helfen? Ich könnte auch eine Messdatei hochladen oder mehr Informationen geben, falls dies erwünscht ist.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 05.02.2020, 10:42     Titel:
  Antworten mit Zitat      
Hallo,

ich würde die Frage im Bereich Signalverarbeitung ansiedeln, und da kenne ich mich leider nicht wirklich aus.

Helfen könnte movmean oder movmedian oder auch ein Median Filter ( medfilt1 ).

Datenbeispiele sind immer hilfreich, da man dann seine Vorschläge gleich ausprobieren kann.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
Busmaster
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 05.08.09
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 05.02.2020, 17:40     Titel:
  Antworten mit Zitat      
Hallo,

eine Variante zur Datenglättung und Berechnung von Ableitungen ist das Verfahren nach Savitzky und Golay.
Dazu gibt es fertige Skripts:
https://de.mathworks.com/help/signal/ref/sgolay.html

https://de.mathworks.com/matlabcent.....rs-and-filter-application

Gruss
Busmaster
Private Nachricht senden Benutzer-Profile anzeigen
 
Tobi92
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 05.12.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.02.2020, 16:23     Titel:
  Antworten mit Zitat      
Harald hat Folgendes geschrieben:
Hallo,

ich würde die Frage im Bereich Signalverarbeitung ansiedeln, und da kenne ich mich leider nicht wirklich aus.

Helfen könnte movmean oder movmedian oder auch ein Median Filter ( medfilt1 ).

Datenbeispiele sind immer hilfreich, da man dann seine Vorschläge gleich ausprobieren kann.

Grüße,
Harald


Danke für deine Antwort.

Hab mal jetzt eine Datei hochgeladen. Ich möchte den y-wert zweimal ableiten. Passend dazu habe ich eben den Zeitvektor.

Deine Vorschläge habe ich alle getestet, aber sie bringen leider nicht den gewünschten Erfolg.


Busmaster hat Folgendes geschrieben:
Hallo,

eine Variante zur Datenglättung und Berechnung von Ableitungen ist das Verfahren nach Savitzky und Golay.
Dazu gibt es fertige Skripts:
https://de.mathworks.com/help/signal/ref/sgolay.html

https://de.mathworks.com/matlabcent.....rs-and-filter-application

Gruss
Busmaster


Danke für deine Antwort.

Hast du das Skript selbst schon mal benutzt? Ich habe die Anleitung gelesen, aber habe ehrlich gesagt noch nicht ganz verstanden, wie ich meine Daten da implementieren kann.

datei_1.mat
 Beschreibung:

Download
 Dateiname:  datei_1.mat
 Dateigröße:  92.49 KB
 Heruntergeladen:  190 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Busmaster
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 05.08.09
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 07.02.2020, 16:23     Titel: nochmal Savitzky-Golay
  Antworten mit Zitat      
Nochmal Hallo,

zur Glättung nach Savitzky-Golay:
Zur Berechnung habe ich habe eigene Scripts benutzt, abgeleitet aus [1].
[1] W. Gander, J. HREBICEK: Solving Problems in Scientific Computing using Maple and Matlab, 2nd Ed. (Chapter 9), Springer Heidelberg 1995

Prinzip:
Durch N Datenpunkte (ungerades N = 2*k+1, width) wird ein Polynom (Grad m, degree) gelegt, dass die Messwerte ausgleicht.
Die Koeffizienten des Polynoms werden durch linear least squares fit bestimmt.
Für ein kubisches Polynom
P3(x) = a*x^3 + b*x^2 + c*x + d, mit x = -k....0....k
werden so die Koeffizienten a, b, c, d bestimmt.
Der geglättete Wert an der Stelle x=0 ist: d
Der Wert der 1. Ableitung an der Stelle x=0 ist: c
Der Wert der 2. Ableitung an der Stelle x=0 ist: 2*b
Das wird für jeden Datenpunkt gemacht; die Randpunkte müssen gesondert behandelt werden.

Man muss den Grad des Polynoms, die Intervallbreite und Glättung + Differentiation oder nur Differentiation ausprobieren.

Beispiel: Polynom vom Grad 5 durch 21 Punkte (mit Octave)
Für Zeitvektor = 0...20 und Differentiation der Originaldaten sieht es ganz vernünftig aus.
(Die gewählte Glättung beseitigt nur Spitzen)
Jeder Sprung in den Daten (Digitalisierung) erzeugt natürlich einen großen Anstieg (1. Ableitung).
Ob die Bildung der 2. Ableitung beim gegebenen Signal sinnvoll ist kann ich nicht beurteilen.

Gruss Busmaster

SG_demo_N5_W21_ovl_1.png
 Beschreibung:
rot: Originaldaten, grün: 1. Ableitung, blau: 2. Ableitung
berechnet durch ein Polynom 5. Grades über ein gleitendes 21-Punkte-Intervall

Download
 Dateiname:  SG_demo_N5_W21_ovl_1.png
 Dateigröße:  93.23 KB
 Heruntergeladen:  208 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Busmaster
Forum-Anfänger

Forum-Anfänger


Beiträge: 16
Anmeldedatum: 05.08.09
Wohnort: Dresden
Version: ---
     Beitrag Verfasst am: 09.02.2020, 11:38     Titel: Savitzky-Golay Scripts
  Antworten mit Zitat      
Die Funktionen realisieren die Glättung bzw. Differentiation nach SAVITZKY-GOLAY.
Geschrieben und getestet vor vielen Jahren mit Matlab 4 & 5, läuft aber offenbar auch unter Octave 5.

smo_sg.m %SMO_SG Glättung der Datenmatrix yin durch Anwendung von SAVITZKY-GOLAY auf die Spektren
erfragt Parameter

sg_difn.m %SG_DIFN Differentiation von äquidistanten Datensätzen nach SAVITZKY-GOLAY
Funktion, erfordert difc.

sg_smon.m %SG_SMON Funktion zur Glättung von äquidistanten Datensätzen nach SAVITZKY-GOLAY
Funktion, erfordert smoc.m

dat_dif.m %DAT_DIF Differentiation der Datenmatrix yin durch spaltenweise Anwendung von SAVITZKY-GOLAY
erfragt Parameter

difc.m %DIFC berechnet die Koeffizienten für Differentiation nach SAVITZKY-GOLAY
smoc.m %SMOC berechnet die Koeffizienten für Glättung nach SAVITZKY-GOLAY


Wichtig:
Meine Erfahrungen sind die Glättung und Differentiation langsam veränderlicher Signale (Spektren).
Es gibt aine Randpunkbehandlung; das Intervall wird an den Rändern automatisch schmaler.
Ob es für Signale mit sehr schnellen Anstiegen (Sprünge) sinnvolle Ergebisse liefert kann ich nicht beurteilen.
Evtl. müssen die Signale erst gelättet werden um den langsamen Signalverlauf von schnellen (Digitaliserung, Rauschen) Änderungen zu trennen.

Das ist hier ja erklärt:
https://www.cbcity.de/differenziere.....mittelwert-savitzky-golay

Viel Erfolg
Keine Garantie

SavGol.zip
 Beschreibung:
Skripte für Savitzky-Golay

Download
 Dateiname:  SavGol.zip
 Dateigröße:  6.45 KB
 Heruntergeladen:  169 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Tobi92
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 10
Anmeldedatum: 05.12.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.02.2020, 14:20     Titel:
  Antworten mit Zitat      
Vielen Dank. Ich schaue es mir an.
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.