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

Ebenen fitten - Drift in Messwerten beseitigen

 

Sinured
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 07.10.08
Wohnort: Salzburg
Version: R2007b
     Beitrag Verfasst am: 29.10.2008, 14:07     Titel: Ebenen fitten - Drift in Messwerten beseitigen
  Antworten mit Zitat      
Hallo!

Ich habe in meinen Proben das Problem, dass die Messwerte mit zunehmender Messdauer steigen. Die Signale, ein periodisch-wiederholendes Dreiecksignal, sollen also von diesem Drift/Offset bereinigt werden.

Dazu habe ich folgenden Ansatz: Ich suche von den Dreieckssignalen die Minima.Von diesen verwende ich die Indices (als x und y) und die Funktionswerte, um so eine Ebene (mit der Methode der kleinsten Quadrate?) zu fitten. Diese kann ich dann an allen Stellen auswerten und von den Messwerten abziehen (Und so den Drift oder Offset beseitigen).

Gibts da irgendeine bereits implementierte Funktion? Die Punkte (Indices und zugehörige Fktwerte als x, y, z) habe ich, allerdings kann man mit polyfit nur 2D-Fits machen. Da der Offset über die gesamte Messung steigt, macht es keinen Sinn, die Daten pro Zeile vom Offset zu bereinigen. Sie passen dann, wegen der Schwankung des Messsignals, nicht mehr zum Rest der Messung.

Hilfe!
Danke, an jene, die Ruf vernehmen Smile

Sinured
Private Nachricht senden Benutzer-Profile anzeigen


Schrank
Forum-Century

Forum-Century


Beiträge: 203
Anmeldedatum: 10.07.08
Wohnort: Berlin
Version: ---
     Beitrag Verfasst am: 29.10.2008, 23:29     Titel:
  Antworten mit Zitat      
Hallo Sinured,
da scheint ja mal wieder der böse alte Satz zu zutreffen: " Wer misst misst mist!"
Ich verstehe noch nicht ganz, warum du ein 3d Problem hast, driftet dein Signal in 2 Dimensionen???? Shocked
Kannst du nicht einfach zwischen den Punkten von einem linearen Verlauf ausgehen oder sogar nur das erste und letzte Minima für eine lineare Abschätzung nutzen, quantitativ auswertbar ist das Signal doch so eh nicht mehr.
Ich fürchte das war jetzt keine große Hilfe, aber vielleicht versuchst du dein Problem doch noch vereinfachen?!?

Gruß Schrank
Private Nachricht senden Benutzer-Profile anzeigen
 
Sinured
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 07.10.08
Wohnort: Salzburg
Version: R2007b
     Beitrag Verfasst am: 30.10.2008, 10:59     Titel:
  Antworten mit Zitat      
Schrank hat Folgendes geschrieben:
" Wer misst misst mist!"

Gruß Schrank


Hallo Schrank!

Leider hast du in dem Fall Recht. Ich bin inzwischen zu dem Schluss gekommen, dass das Bereinigen der Messwerte relativ wenig Sinn macht. Mein Ziel war es, den Drift der Daten mit einer globalen Offset-Ebene zu beseitigen. Das funktioniert leider so nicht, da die Abweichung doch etwas komplexer ist, als ich zuerst dachte. Mit einem globalen linearen Fit wird das wohl nichts.

Ich werde die Punkte an den Minima zum Erstellen einer Gerade nehmen und diese von den Messwerten abziehen. Das werde ich dann so oft wiederholen, wie ich ein Minimum in der Zeile finden kann, dann ist Schluss und ich beginne mit der nächsten Zeile. Ist wohl das einfachste und auch nicht unpräziser.

Vielen Dank für die Anregung!
LG Sinured
Private Nachricht senden Benutzer-Profile anzeigen
 
Sinured
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 07.10.08
Wohnort: Salzburg
Version: R2007b
     Beitrag Verfasst am: 30.10.2008, 11:02     Titel:
  Antworten mit Zitat      
Code:

xi=(1:length(Sample1));

for i=1:min(size(Sample1));
    indi  = gradient(Sample1(i,:))>=0;    
    pindi = find(diff(indi)>0);
    offsetfit=[pindi;Sample1(1,pindi)];
    P=polyfit(offsetfit(1,:),offsetfit(2,:),1);
   
    Sample(i,:)=Sample1(i,:)-polyval(P,xi);
end
 


Hier mein Ansatz, funktioniert, solange man wirklich nur ein Minimum pro Periode hat. Wenn irgendwo innerhalb einer Periode mehrere Minima sind, werden diese auch gefunden. Derartige Ausreißer werden dann allerdings auch bei der Berechnung der Ausgleichsgerade berücksichtigt und führen dann zu falschen Ergebnissen.

Gibts eigentlich einen Weg, das zu verhindern? Kann man, wie im unten skizzierten Verlauf, nur die absoluten Minima einer Periode finden und das ganze auch programmiertechnisch lösen?

[edit] Ich habe den Status auf beantwortet gesetzt, da es inzwischen um ein anderes Thema geht[/edit]

Signalverlauf.PNG
 Beschreibung:

Download
 Dateiname:  Signalverlauf.PNG
 Dateigröße:  6.33 KB
 Heruntergeladen:  852 mal
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.