|
|
schlecht formatiertes .txt einlesen, Header entfernen |
|
lonelydriver |

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 09.12.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.01.2014, 12:31
Titel: schlecht formatiertes .txt einlesen, Header entfernen
|
 |
|
 |
|
Hallo,
im Rahmen meiner Abschlussarbeit muss ich Messdaten auswerten, die in folgender Form vorliegen
19075, 586, 2, -707
19075, 586,
586, 2, -707
19074, 586, 2, -707
19073, 586, 2, -707
19075, 586, 2, -707
19002, 584, 2, -70
2, -700
19004, 584, 2, -700
19003, 584, 2, -700
19004, 584, 2, -700
18984, 583, 2, -698
19001, 584, 2, -700
19000,
96
18946, 582, 2, -694
18955, 583,
, 583, 2, -697
18974, 583, 2, -697
18976, 583, 2, -697
18977, 583, 2, -697
18978, 583, 2, -697
18980, 583, 2, -698
18979, 583, 2, -697
# ----------------------------------
#h 300, 200, 100, 0
#f 9000, 10000, 11000, 18979
# ----------------------------------
# count f[kHz] h[mm]
18972, 583, 2, +1
18971, 583, 2, +1
18969, 583, 2, +1
18969, 583, 2, +1
18973, 583, 2, +1
18968, 5
18901, 581, 2, +1
18903, 581, 2, +1
18903, 581, 2, +1
18906, 581, 2, +1
18905, 581, 2, +1
18904, 581, 2, +1
18910, 581, 2, +1
18903, 581, 2, +1
18906, 581, 2, +1
18906, 581, 2, +1
18781, 577, 1, +102
18783, 577,
2, 582, 2, +62
18935, 582, 2, +58
18938, 582, 2, +54
18943, 582, 2, +47
Das Problem besteht darin, dass die Daten in einem .txt vorliegen und für die Auswertung nur die 4. Spalte von Relevanz ist.
Bisher habe ich den folgenden Code
der Code schreibt auf jeden Fall keine Zeilen mit, in denen in Spalte 4 keine Werte stehen,
aber leider wird z.B aus dem Header die Werte mitgeschrieben und dann z.B 18979 als h[mm] für die Spalte 4 interpretiert.
#h 300, 200, 100, 0
#f 9000, 10000, 11000, 18979
Es sollen praktisch alle mit # beginnenden Zeilen nicht ins Array übernommen werden. Der mit # eiengeleitete Header wird immer mal wieder in unregelmäßigem Abstand in das Protokoll gestreut.
Unter http://www.gomatlab.de/txt-datei-mi.....aben-einlesen-t20430.html oder unter http://www.gomatlab.de/datei-einles.....er-ignorieren-t24044.html findet man dazu was.
Ich wüsste aber nicht, wie ich den jetzigen Code entsprechend abändern kann.
Das letzte Problem ist, dass manchmal die Werte verrutschen.
18781, 577, 1, +102
18783, 577,
2, 582, 2, +62
18935, 582, 2, +58
und es andererseits manchmal keine Werte in Spalte 4 gibt.
18973, 583, 2, +1
18968, 5
18901, 581, 2, +1
18903, 581, 2, +1
18903, 581, 2, +1
Ich hätte halt gerne eine vollständig automatisierte Lösung, da eine Messaufzeichnung ca 7000 Zeilen besitzt.
Vielen Dank für Hilfe.
Ihr seid die Besten!
_________________
Wer nicht wagt, der nicht gewinnt!
|
|
|
|
|
Mmmartina |

Forum-Meister
|
 |
Beiträge: 745
|
 |
|
 |
Anmeldedatum: 30.10.12
|
 |
|
 |
Wohnort: hier
|
 |
|
 |
Version: R2020a
|
 |
|
|
 |
|
Verfasst am: 16.01.2014, 14:59
Titel:
|
 |
Ich würde vermutlich strfind anwenden.
Wenn in der Zeile ein # vorkommt, einfach mit nächster Zeile weitermachen.
Enthält die letzte Spalte - sofern sie vorkommt - immer ein Vorzeichen? Wenn ja, dass kannst du auch dannach suchen (also entweder + oder -) um auch bei zeilen, wo einer der anderen 4 werte fehlt den 4. Wert zu identifizieren.
_________________
LG
Martina
"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
|
|
|
jurtsche |

Forum-Century
|
 |
Beiträge: 123
|
 |
|
 |
Anmeldedatum: 26.03.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.01.2014, 15:21
Titel:
|
 |
|
|
lonelydriver |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 09.12.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.01.2014, 16:15
Titel:
|
 |
ja, sogar die Null besitzt ein Vorzeichen.
Ich weis aber nicht, wie ich die COdes entsprechend in das vorhandene
Skript integriere, da dieses ja alle 4 Spalten nach MATLAB überträgt, und ich mir dann von diesem in einem weiteren Skript nur den Vektor aus Spalte 4 rauspicke mittels h = logfile(:,4);
es wäre super nett, wenn ich das noch hinkriege, da dieses blöde .txt nicht mein Verbrechen ist, aber ich nur das habe.
Vielen vielen Dank.
_________________
Wer nicht wagt, der nicht gewinnt!
|
|
|
jurtsche |

Forum-Century
|
 |
Beiträge: 123
|
 |
|
 |
Anmeldedatum: 26.03.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.01.2014, 16:37
Titel:
|
 |
das regexp macht doch eh genau das was du willst, oder?
|
|
|
lonelydriver |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 12
|
 |
|
 |
Anmeldedatum: 09.12.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 16.01.2014, 21:51
Titel:
|
 |
ja laut der MATLAB Hilfe schon,
aber wie muss ich den Code abändern, dass er aus dem 4 spaltigen .txt file
genau die 4.Spalte mit den genannten Anforderungen rausließt und in eine neue Variable in den Workspace schreibt.
Vielleicht könnt ihr (du) das mal mit dem Datensatz aus dem Eingangspost ausprobieren. Ich bin MATLAB Greenhorn und hatte im Studium nix dazu und muss aber nun einen Datensatz auswerten und will das sauber und elegant ohne manuelles Bereinigen machen können, damit spätere Messungen dann reproduzierbar sind.
Schwierig sehe ich noch, wie MATLAB aus -702, wo -70 in der oberen und der Rest 2 in die darunterliegende Zeile verutscht ist, als -702 der 4.Spalte interpretiert.
Ich komm schon voll in den Stress wegen des Abgabetermins. Daher nocheinmal die Bitte an Euch!
_________________
Wer nicht wagt, der nicht gewinnt!
|
|
|
Headbucket |

Forum-Anfänger
|
 |
Beiträge: 34
|
 |
|
 |
Anmeldedatum: 03.12.13
|
 |
|
 |
Wohnort: Dresden
|
 |
|
 |
Version: R2007B
|
 |
|
|
 |
|
Verfasst am: 17.01.2014, 08:56
Titel:
|
 |
|
 |
|
Um die vierte Spalte einzulesen kannst du z.B. mit fgetl Zeile für Zeile durchgehen und jeweils den vierten Wert auslesen. Ein ähnlichen Thread findest du z.B. hier.
Das kopiert dir z.B. alle Werte mit einem - oder + davor in einen Vektor.
Das ganze geht sicher noch deutlich eleganter. Aber ich denke mal, dass dieses Vorgehen sehr anschaulich und einfach verständlich ist.
Natürlich werden jetzt aber noch keine Zeilensprünge erkannt. Dazu müsstest du z.B. den aktuellen Wert mit dem vorherigen vergleichen und schauen, ob eine große Abweichung besteht (wie z.B. zwischen 700 und 70). Wenn ja: Zeilensprung.
Das ist aber wirklich etwas tricky. So kann man ja z.B. nicht immer von einem Zeilensprung ausgehen, wenn du Zeile nur 2 oder 1 Wert enthält, richtig? Sicher alles machbar aber da musst du noch ein wenig programmieren.
Generall empfehle ich dir, dir die MATLAB-Grundlagen anzuschauen. Du hast sicher schon gemerkt, dass dir hier ungern jemand das Schreiben deiner Abschlussarbeit abnehmen will. Ich habe in meiner Diplomarbeit auch viel MATLAB benutzt und musste mir ebenso alles aneignen. Es bringt nicht, wenn du in deiner Arbeit MATLAB-Code stehen hast, den du selbst nicht verstehst. Nicht böse gemeint sondern eher ein guter Rat . Wenn die Zeit drängt ist das natürlich ungünstig... .
Grüße
Headbucket
|
|
|
jurtsche |

Forum-Century
|
 |
Beiträge: 123
|
 |
|
 |
Anmeldedatum: 26.03.13
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 17.01.2014, 09:09
Titel:
|
 |
lonelydriver hat Folgendes geschrieben: |
ja laut der MATLAB Hilfe schon,
aber wie muss ich den Code abändern, dass er aus dem 4 spaltigen .txt file
genau die 4.Spalte mit den genannten Anforderungen rausließt und in eine neue Variable in den Workspace schreibt.
|
Mit dem sollten die Werte der 4. Spalte als Cells im Workspace liegen:
lonelydriver hat Folgendes geschrieben: |
Schwierig sehe ich noch, wie MATLAB aus -702, wo -70 in der oberen und der Rest 2 in die darunterliegende Zeile verutscht ist, als -702 der 4.Spalte interpretiert. |
kommt drauf an wie du diese regel umsetzen würdest. und ob es sinn macht.
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
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
| 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.
|
|