|
|
Einlesen & Bearbeiten von .txt file |
|
stevie_g |

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 01.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.02.2011, 14:41
Titel: Einlesen & Bearbeiten von .txt file
|
 |
|
 |
|
Hallo zusammen,
ich komme momentan bei einem Problem nicht weiter.
Ich habe eine relativ große Textfile, welche z.T. aus Strings besteht.
Hier einmal ein kurzer Beispielausschnitt:
Zitat: |
$GNZDA,102740.00,26,01,2011,01,00*7E
$GNGGA,102739.80 ,5223.1323629,N,00942.7350485,E,1,17,0.6,112.534,M,,,,*28
$GNGGQ,102739.80,012611,5223.1323629,N,00942.7350485,E,1,17,3.115,112.534,M*11
$GNGLL,5223.1323629,N,00942.7350485,E,102740.00,A,A*78 |
Im Endeffekt möchte ich jetzt jedoch nur die Zeilen weiterverarbeiten, die mit "$GNGLL" beginnen.
Mein geplantes Vorgehen sah so aus, dass ich nach dem Einlesen des Textes eine for-Schleife durchlaufen lasse, die nach dem String am Anfang sucht und dann mein gesuchtest Element (i,5) heraussucht und eine neue Matrix damit füllt.
Ich scheitere jedoch schon am Einlesen der Daten. Zum einen an den teilweise vorhandenene Strings, sowie an der ungleichen Anzahl von Spalten. Wie kann man das am Besten lösen?
Ich hoffe auf eure Hilfe und mit bestem Dank im Vorraus
|
|
|
|
|
_Peter_ |

Moderator
|
 |
Beiträge: 537
|
 |
|
 |
Anmeldedatum: 08.12.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.10, 2010a
|
 |
|
|
 |
|
Verfasst am: 01.02.2011, 15:11
Titel:
|
 |
Hallo stevie_g,
du könntest das einlesen und die Überprüfung nach dem Anfangsstring wie folgt lösen:
oder alternativ mit regexp
_________________
Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
|
|
|
stevie_g |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 01.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.02.2011, 16:00
Titel:
|
 |
_Peter_ hat Folgendes geschrieben: |
|
Hallo Peter,
vielen Dank für die schnelle Antwort. Worauf bezieht sich das "1:6"?
Wenn ich jetzt in deine Kommentarzeile bspw.
einfüge, dann gibt er mir hinterher A = 5 zurück, also den ersten Wert der gewünschten Zahl. Wenn ich das richtig sehe, versteht er den Wert "5223.1323629" aber nicht als Zahl, sondern ist das achte Element der Zeile auch der achte char?!
Ich hoffe, ich habe mich im Eingangspost nicht missverständlich ausgedrückt: ich möchte aus den Zeilen, die wie o.g. beginnen sämtliche Zahlenwerte haben, um mit denen dann weiterrechnen zu können. Also aus der gesamten File nur ein paar ausgewählte Daten übernehmen, der Rest ist unwichtig für mich.
|
|
|
_Peter_ |

Moderator
|
 |
Beiträge: 537
|
 |
|
 |
Anmeldedatum: 08.12.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.10, 2010a
|
 |
|
|
 |
|
Verfasst am: 01.02.2011, 16:51
Titel:
|
 |
|
 |
|
Hallo stevie_g,
Zitat: |
Worauf bezieht sich das "1:6"?
|
Das sind die ersten 6 char elemente von tline, weil die Zeile als string eingelesen wird.
Folglich ist auch
Zitat: |
ist das achte Element der Zeile auch der achte char?!
|
Diese Annahme richtig.
Was ich noch anmerken wollte. Generell würde ich dir von den beiden Methode die mit regexp empfehlen, weil dabei auch Leerzeichen am Zeilenanfang kein Problem wären. (Bei der strcmp-Methode hingegen schon, aber ich wollte dir beide Wege aufzeigen)
Angenommen wir wollen alle Zahlen aus der Zeile ausfiltern dann würde ich das einsetzen:
Dadurch hast du alle Zahlen in values (cell array) stehen.(die 78 habe ich jetzt mal nicht beachtet weil die ja in Verbindung mit einem char steht.
Anspechen kannst du die Zahlen nach folgendem Prinzip:
_________________
Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
|
|
|
stevie_g |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 01.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.02.2011, 17:18
Titel:
|
 |
Hallo Peter,
besten Dank für deine bisherige Hilfe.
Ich habe jetzt bisher mit deinem ersten Lösungsansatz herumexperimentiert.
Das Problem der Strings habe ich jetzt folgendermaßen gelöst:
Also sehr laienhaft, aber es funktioniert bis hierhin und daher bin ich eigentlich soweit zufrieden. Momentan hakt es noch bei zwei Kleinigkeiten:
1.) Ich möchte den Wert "D" als Teil einer Matrix haben, also alle errechneten D's in einer finalen Matrix am Ende. Dazu würde sich vermutlich eine for-Schleife anbieten, wo genau muss ich die einsetzen?
2.) Diese Schleife sollte nach Möglichkeit nicht von 1:20350 laufen, sondern ich hätte es gerne etwas allgemeiner, ginge es, dass er die Dimension der Gesamtmatrix erkennt und dann "for = 1:ZEILEN" läuft o.ä.?
Mit bestem Gruß
|
|
|
_Peter_ |

Moderator
|
 |
Beiträge: 537
|
 |
|
 |
Anmeldedatum: 08.12.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: 7.10, 2010a
|
 |
|
|
 |
|
Verfasst am: 01.02.2011, 17:36
Titel:
|
 |
Hallo stevie_g,
1.
2.Müsste sich dann ja erledigt haben.
3. Du solltest bei deiner Methode jedoch wissen, dass wenn sich an der Struktur der Datei etwas ändern, dein Code nichtmehr richtig funktionieren wird und du ihn mühsam anpassen musst. Von daher ist die regexp-Methode stabiler und dynamischer.
_________________
Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
|
|
|
stevie_g |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 01.02.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 01.02.2011, 17:43
Titel:
|
 |
Okay, perfekt. Jetzt läuft es. Vielen, vielen Dank. Die Hinweise nehme ich auch gerne mit.
|
|
|
|
|
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.
|
|