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

Anfänger - Auswertung eines Dataloggers mittels Octave

 

H.Heckmeck
Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 28.11.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.11.2018, 13:03     Titel: Anfänger - Auswertung eines Dataloggers mittels Octave
  Antworten mit Zitat      
Hallo!
Ich bin neu hier und habe mich angemeldet, da ich bei der Bearbeitung meiner Masterthesis auf Matlab/Octave setze, aber noch nicht wirklich damit gearbeitet habe. Ich hoffe daher, hier Hilfe beim Einstieg zu finden.

Aktuell möchte ich die Daten aus einer Data-Logger .csv-Datei importieren um sie zunächst zu plotten. Die komplette Datei habe ich per dlmread in eine Matrix und die einzelnen Spalten daraus als Vektoren gespeichert. Nun muss ich die Daten vor dem Plotten noch filtern, da nicht alle Datensätze sauber sind. Ich denke da z.B. daran, die Temperaturwerte darauf zu prüfen, ob sie in einem sinnvollen Bereich liegen und falls nicht, den Wert durch den vorigen zu ersetzen (vertretbar in meinem Fall) um die Länge beizubehalten. Ist das prinzipiell korrekt oder gibt es sinnvollere Verfahren? Wie würde man da vorgehen?
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: 28.11.2018, 18:18     Titel: Re: Anfänger - Auswertung eines Dataloggers mittels Octave
  Antworten mit Zitat      
Hallo H.Heckmeck,

Zitat:
...filtern, da nicht alle Datensätze sauber sind. Ich denke da z.B. daran, die Temperaturwerte darauf zu prüfen, ob sie in einem sinnvollen Bereich liegen und falls nicht, den Wert durch den vorigen zu ersetzen (vertretbar in meinem Fall) um die Länge beizubehalten. Ist das prinzipiell korrekt oder gibt es sinnvollere Verfahren?

Das kann in Ordnung sein. Ob es korrekt ist hängt ganz von der physikalischen Natur der Daten ab. Das Problem wäre sicherlich "sinnvoll" geeignet zu definieren. Du könntest alle Punkte, die mehr als 3 Standardabweichungen von der lokalen Umgebung abweichen als Ausreißer definieren - oder 2 Standardabweichungen, oder einen festen Betrag, oder einen relativen, usw. Das Rauschen hart zu entfernen ist immer auch eine Art "Datenfälschung", vor allem, wenn man die Änderungen so vornimmt, dass das Ergebnis "schöner" aussieht. Wenn man dagegen die Natur des Rauschens untersucht und physikalisch begründen kann, was man wegfiltert, gilt das als "sinnvoll". Wenn Du z.B. ein 50Hz Rauschen in einem Signal hast, das von der Netzfrequenz der Netzteile der Messapparatur stammt, wäre das physikalisch begründet. Zusätzlich müsste man dann aber noch ausschließen, dass das gesuchte Signal ebenfalls bei 50Hz liegt, denn damit würde auch das Nutzsignal verschwinden.

Filtern ist eine sehr anspruchsvolle Aufgabe und ich würde dazu jemand ins Team holen, der sich professionell mit Signalbearbeitung auskennt.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
H.Heckmeck
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 14
Anmeldedatum: 28.11.18
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 28.11.2018, 19:09     Titel:
  Antworten mit Zitat      
Jan S hat Folgendes geschrieben:
Hallo H.Heckmeck,
...


Hi Jan!
Danke für die Antwort Very Happy Ich hab mich nicht ganz korrekt ausgedrückt: Es geht erst Mal um sowas wie unvollständige Zeilen, wo dann ein Maximal- oder Minimalwert an Stelle des Messwerts auftaucht, oder wo der Wert eines anderen Sensors in die betreffende Spalte gerutscht ist. Das ist natürlich streng genommen auch eine Art Rauschen, aber damit will ich mich eigentlich nicht aufhalten. Die konkrete Messung gibt das Ersetzen mit dem benachbarten Wert her - vorausgesetzt es geschieht nur an einzelnen Stellen. Da mache ich mir keine Sorgen, was mir fehlt ist die handwerkliche Herangehensweise. In C oder dergleichen würde ich z.B. für die Temperaturmessung sagen
Code:
if(Temp_i<0) {Temp_i = Temp_(i-1)};
if(Temp_i>100) {Temp_i = Temp_(i-1)};

Ist die Vorgehensweise hier die selbe?
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: 06.12.2018, 17:23     Titel:
  Antworten mit Zitat      
Hallo H.Heckmeck,
Zitat:
In C oder dergleichen würde ich z.B. für die Temperaturmessung sagen
Code:
if(Temp_i<0) {Temp_i = Temp_(i-1)};
if(Temp_i>100) {Temp_i = Temp_(i-1)};

Ist die Vorgehensweise hier die selbe?

Schwer zu sagen, denn das ist kein valider C-Code. Was bedeutet "_i" und "_(i-1)"? Ist das eine Indizierung? Es könnte schon richtig sein.
Code:
x = randn(1, 100);
for k = 2:numel(x)
  if x(k) < -1 || x(k) > +1
    x(k) = x(k - 1);
  end
end

Gruß, Jan
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.