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

Hysterese glätten

 

nebukhadnezar
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 07.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.01.2012, 15:32     Titel: Hysterese glätten
  Antworten mit Zitat      
Hallo!

Ich habe folgendes Problem:

und zwar habe ich eine Messdatenreihe die eine Hysterese als Kurvenform besitzt. Die Messdaten, die ich von den Lastzellen meiner Versuchseinrichtung erhalte, sind jedoch sehr verrauscht .

Habe ein Gui geschrieben das mir dann die gewünschten Daten in 3 Axis-Fenstern ausgibt.

Ich würde nun eine art Trendlinie benötigen, um den Kurvenverlauf zu glätten.


Das Hauptproblem liegt jetzt in der Zuweisung 2er y werte zu je einem x wert (eine Hysterese besitzt ja einen aufsteigenden und abfallenden Zweig), was sämtliche Glättungsmethoden wie polyfit etc.unbrauchbar macht (soweit zumindest meine Erfahrungen bisher).

..Habe auch schon bereits versucht mittels der filt() und der bidirektionalen filtfil() Funktion den Verlauf zu glätten (verursacht am Umkehrpunkt der Funktion eine art Schlaufe, da aufsteigender und abfallender Ast nicht unterschieden werden (wenn das definierte Fenster am maximum der kurve liegt und der moving average berechnet wird).

...ein weiterer Versuch, den aufsteigenden und abfallenden Zweig der Hysterese in 2 getrennte Matritzen zu seperieren und mittels einem savitzky-golay-Algorythmus diese seperat zu glätten( und anschließend wieder zusammenzufügen) schlug ebenfalls fehl. Sad
Code:

[junk1,idx1] = max(couchy_xwert);

 for w1 = 1:size(couchy_xwert,2)
    couchy_x_aufsteigend{w1} = couchy_xwert(1:idx1(w1),w1);
    couchy_x_absteigend{w1} = couchy_xwert(idx1(w1):end,w1);
    lambda_x_aufsteigend{w1}=lambda_xwert(1:idx1(w1),w1);
    lambda_x_absteigend{w1}=lambda_xwert(idx1(w1):end,w1);
 end

[junk2,idx2] = max(couchy_ywert);

for w2 = 1:size(couchy_ywert,2)
    couchy_y_aufsteigend{w2} = couchy_ywert(1:idx2(w2),w2);
    couchy_y_absteigend{w2} = couchy_ywert(idx2(w2):end,w2);
    lambda_y_aufsteigend{w2}=lambda_ywert(1:idx2(w2),w2);
    lambda_y_absteigend{w2}=lambda_ywert(idx2(w2):end,w2);
end
 

Savitzky_couchy_x_auf= sgolayfilt(couchy_x_aufsteigend{1,1},4,111);
Savitzky_couchy_x_ab= sgolayfilt(couchy_x_absteigend{1,1},4,111);

Savitzky_couchy_y_auf= sgolayfilt(couchy_y_aufsteigend{1,1},4,111);
Savitzky_couchy_y_ab= sgolayfilt(couchy_y_absteigend{1,1},4,111);
Savitzky_couchy_y_ab(1,:)=[];
Savitzky_couchy_x_ab(1,:)=[];
Smoothed_couchy_y=[Savitzky_couchy_y_auf;Savitzky_couchy_y_ab];
Smoothed_couchy_x=[Savitzky_couchy_x_auf;Savitzky_couchy_x_ab];

 



Vielleicht gibt es eine ganz einfache und simple Methode dieses Problem zu lösen und ich denke einfach nur zu kompliziert.



Vielleicht kann mir hier jemand bei meinem Problem helfen, oder mir einen Tritt in die richtige Richtung verpassen. Very Happy


Im Anhang hab ich einen Screenshot meiner Axes aus dem Gui angefügt

Vielen Vielen Dank im Vorraus
glg nepu

Plot.PNG
 Beschreibung:
Hier ein typischer Kurvenverlauf

Download
 Dateiname:  Plot.PNG
 Dateigröße:  36.17 KB
 Heruntergeladen:  614 mal
Private Nachricht senden Benutzer-Profile anzeigen


nebukhadnezar
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 07.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2012, 14:10     Titel:
  Antworten mit Zitat      
Hallo nochmal!

Hat wirklich keiner eine Idee wie mein obiges Problem zu lösen wäre, bin langsam am verzweifeln.

...schon mal vielen vielen dank für die hoffentlich vielen Tipps und Tricks

lg nepu
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 08.01.2012, 14:26     Titel:
  Antworten mit Zitat      
Kannst du mal die beiden Kennlinien der Hysterese getrennt als mat-file (vorher packen...zip, rar) hier anhängen?!
Private Nachricht senden Benutzer-Profile anzeigen
 
nebukhadnezar
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 07.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2012, 21:09     Titel:
  Antworten mit Zitat      
Hallo Dsp,

..du meinst den seperierten y-Vektor ...also aufsteigender und abfallender Ast getrennt mit zugehörigem x-Vektor?

Ja kann ich...allerdings erst morgen (da sitze ich dann wieder im Labor).

vielen dank schonmal
lg Nepu
Private Nachricht senden Benutzer-Profile anzeigen
 
nebukhadnezar
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 07.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2012, 12:43     Titel:
  Antworten mit Zitat      
Hallo,

Anbei habe ich die Daten als m-file gepackt angefügt.

Vielen dank schonmal.
lg Nepu

daten.rar
 Beschreibung:
aufsteigender und abfallender Zweig, sowie die Gesammtvektoren

Download
 Dateiname:  daten.rar
 Dateigröße:  140.69 KB
 Heruntergeladen:  390 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
DSP
Forum-Meister

Forum-Meister



Beiträge: 2.117
Anmeldedatum: 28.02.11
Wohnort: ---
Version: R2014b
     Beitrag Verfasst am: 09.01.2012, 17:26     Titel:
  Antworten mit Zitat      
Soll hier eigentlich ein bestimmten Verlauf approximiert werden oder nur das hochfrequentere Rauschen entfernt werden?

Letzteres könnte man mit smooth lösen...

Code:

c_x_s200 = smooth(couchy_x,100);
l_x_s200 = smooth(lambda_x,100);
 
Private Nachricht senden Benutzer-Profile anzeigen
 
nebukhadnezar
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 07.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.01.2012, 19:51     Titel:
  Antworten mit Zitat      
Nein, es soll lediglich das Rauschen eliminiert werden.

Habe bereits selber den Fehler in meiner Überlegung gefunden.
Der Algorythmus hat mir sehr wohl das Rauschen aus dem y-Vektor entfernt. Hatte nur vergessen auch den x-Vektor zu glätten. Jetzt bekomme ich annehmbare Plots.

Werde es auch noch mit dem smooth Befehl versuchen - wäre toll wenn das auch funktioniert (wäre wesentlich resourcenschonender als meine variante.. es muss eben nicht alles immer soo kompliziert sein wie man es sich vorstellt. Smile )

Vielen vielen Dank nochmal für deine Hilfe.

Beste Grüße
nepu
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.