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

Verlauf glätten unter Beibehaltung der Peaks

 

Boingenau
Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 16.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.01.2017, 12:58     Titel: Verlauf glätten unter Beibehaltung der Peaks
  Antworten mit Zitat      
Hallo zusammen,

ich habe etwas Probleme mit der Auswertung von Versuchsdaten und wäre über Hilfe sehr dankbar. Smile

Aus Versuchen habe ich Messdaten erhalten, die leider etwas rauschen und daher so nicht für weitere Berechnungen verwendet werden können. Die Messdaten sind im Anhang (blaue Linie) beigefügt.
Für weitere Berechnungen sollte der Verlauf kontinuierlich zwischen den einzelnen Peaks steigen bzw. fallen. Ich habe das erstmal ziemlich simpel mit einer Glättung mit smooth (orangene Linie) versucht, allerdings werden dabei die Peaks auch geklättet, was auf jeden Fall vermieden werden soll.
Kann mir vielleicht jemand nen Tipp geben, wie ich den Verlauf glätten kann, ohne dabei die Peaks zu verringern? Vielen Dank.

Grüße

Bild.pdf
 Beschreibung:

Download
 Dateiname:  Bild.pdf
 Dateigröße:  45.01 KB
 Heruntergeladen:  349 mal
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 04.01.2017, 13:48     Titel: Re: Verlauf glätten unter Beibehaltung der Peaks
  Antworten mit Zitat      
Hallo Boingenau,

Dazu musst Du zunächst mathematisch eindeutig definieren, was du als "Peak" bezeichnest.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Boingenau
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 16.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.01.2017, 15:41     Titel:
  Antworten mit Zitat      
Hallo Jan,

vielen Dank für deine Antwort. Das Bild zeigt einen Ausschnitt aus einer zyklischen Kraft, welche abwechselnd positive und negative Werte annimmt. Mit Peaks meine ich das jeweilige Maximum, bzw. Minimum, welches im jeweiligen Abschnitt zwischen dem Vorzeichenwechsel auftritt. Als Code könnte man das für einen kontinuierlichen Verlauf so formulieren:

Code:

Vorzeichen=sign(Kraft);
PunkteLastumkehr=find(diff(Vorzeichen));
n0=[PunkteLastumkehr;length(Kraft)];                                            
n=[1;n0];                                                        %Sind die jeweiligen Nulldurchgänge

%Bestimmung der zyklischen Minimalwerte
for k=1:(length(n)-1);
    min_value(k) =min(Kraft(n(k):n(k+1)));
end;                                

%Bestimmung der zyklischen Maximalwerte
for j=1:(length(n)-1);
    max_value(j) =max(Kraft(n(j):n(j+1)));
end;
 


Dieser Code funktioniert hier jedoch nicht, da es infolge des Rauschens jeweils zu mehreren Nulldurchgängen im selben Bereich kommt. Hoffe ich habe mich verständlich ausgedrückt.

Grüße

Bild.pdf
 Beschreibung:

Download
 Dateiname:  Bild.pdf
 Dateigröße:  26.34 KB
 Heruntergeladen:  360 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.01.2017, 16:15     Titel:
  Antworten mit Zitat      
Wenn es nicht in Echzeit funktionieren muss, guck Dir vielleicht mal den Douglas-Peucker-Algorithmus an. Da gibt es auch schon fertige Implementierungen im Matlab-Fileexchange. Zum Beispiel hier: https://de.mathworks.com/matlabcent.....21132-line-simplification

Ich habe das irgendwann mal noch so umgebaut, dass ich die Länge des reduzierten Vektors übergeben konnte und per fminsearch die dazu passende Toleranz gefunden wurde. Das kann bei vielen Datenreihen sonst in ein ziemliches gefummel ausarten. Wenn Du nur zwei, drei Messungen hast, kannst Du Dir das aber auch sparen...

Die Funktionsweise ist bei Wikipedia ganz gut beschrieben: https://de.wikipedia.org/wiki/Douglas-Peucker-Algorithmus
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 04.01.2017, 16:54     Titel:
  Antworten mit Zitat      
Hallo Boingenau,

Stimmt, die Daten sind verrauscht. Deswegen ist "Peak" nicht eindeutig definiert. Wenn Du die Maximal-Werte nicht geglättet bekommen möchtest (was aber aus messtechnischer Sicht sinnvoll wäre, da es sich ja offensichtlich um Rauschen handelt), musst Du irgendwie eindeutig definieren, welche Werte Du als Peak betrachten willst. Meine Frage bleibt also:
Wie ist in Deinem Fall "Peak" genau definiert?
Vielleicht ist es das Maximum über eine gewisse Dauer des Signals. Diese Dauer müsstest Du allerdings vorgeben basierend auf dem Wissen über die Natur des Signals, z.B. die Periodenlänge.

Auch mit dem Douglas-Peuker wird diese Aufgabe nicht eindeutig gelöst:
Zitat:
Für weitere Berechnungen sollte der Verlauf kontinuierlich zwischen den einzelnen Peaks steigen bzw. fallen


Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Epfi
Forum-Meister

Forum-Meister



Beiträge: 1.134
Anmeldedatum: 08.01.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.01.2017, 16:58     Titel:
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:

Auch mit dem Douglas-Peuker wird diese Aufgabe nicht eindeutig gelöst:
Zitat:
Für weitere Berechnungen sollte der Verlauf kontinuierlich zwischen den einzelnen Peaks steigen bzw. fallen



Das kannst Du dann mit der Toleranz (=Abbruchkriterium) einstellen. Im Extremfall bleiben nur noch Start- und Endpunkt übrig und dazwischen fällt oder steigt der Verlauf streng monoton...

Aber ohne eine greifbare Definition eines "Peaks" ist das Problem tatsächlich nur schwer lösbar...
Private Nachricht senden Benutzer-Profile anzeigen
 
Boingenau
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 22
Anmeldedatum: 16.09.16
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.01.2017, 20:52     Titel:
  Antworten mit Zitat      
Hallo,
vielen Dank für eure Antworten!!!
Hatte das mit der Definition des Peaks wohl etwas falsch verstanden. Ein Extremalpunkt tritt in jedem 42. Messpunkt auf. Ich habe mir die ganze Thematik auch nochmal durch den Kopf gehen lassen und bin jetzt doch zu dem Entschluss gekommen, dass ich die Maximalwerte auch mitteln kann. Würdet ihr mir für ein kontinuierliches Ansteigen und Abfallen des Verlaufes trotzdem den Douglas-Peucker-Algorithmus empfehlen, oder sollte ich mir dafür ein anderes Verfahren anschauen?
Grüße
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 - 2025 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.