Verfasst am: 11.10.2008, 15:52
Titel: Daten einlesen welche mehrere Trennzeichen haben
Hallo zusammen,
ich bin neu hier und hoffe ich habe das richtige Unterforum gefunden.
Mein Problem ist folgendes: Ich habe eine Textdatei wo erst etwas Text kommt und nach einer Weile meine Daten. Diese will ich mit dlmread('filename', delimiter, R, C) in eine Matrix einlesen. Jetzt habe ich das Problem, das die Daten einmal mit Leerzeichen und manchmal nur mit Tabulator voneinander getrennt sind. Leider kann man meines Wissens nur einen delimiter angeben und so führt die Texteingabe immer zu fehlern. Gibt es eine Möglichkeit 2 delimiter anzugeben, wovon immer nur einer von beiden zutreffen muss?
Ich habe mir jetzt als Alternative den tetscan()-Befehl angeschaut. Gibt es bei dem Befehl eine Möglichkeit die Zeilen anzugeben, die er auslesen soll? Wie schon gesagt enthält meine Textdatei am Anfang Sachen die mich nicht interessieren, und die auch ein ganz anderes Format haben als die Daten die ich auslesen will (z.B. nur eine Stringzeile usw.).
Ok, direkt mehrere Trennzeichen anzugeben scheint wohl nicht möglich zu sein.
Ich habe zwischenzeitlich noch etwas herumprobiert und herausgefunden, das Matlab die Daten trotz der 2 verschiedenen Trennzeichen korrekt einliest, wenn die Nachkommastellen mit einem '.' angegeben werden. Nun ist es bei mir aber deutsch und dementsprechend ein ','. Gibt es eine Möglichkeit Matlab beizubringen, das Nachkommastellen mit einem Komma und keinem Punkt angegeben werden?
Ansonsten sehe ich nur die Möglichkeit die Daten einzulesen, zu bearbeiten und wieder zu speichern. Und dann erst alle Daten mit dlmread() als Array einzulesen. Diese Möglichkeit gefällt mir aber irgendwie so garnicht.
Danke erstmal für deine Antwort. Leider hilft es mir nicht weiter. Zum einen gibt es mit load wohl keine Möglichkeit die ersten Zeilen zu überspringen, zum anderen hab ich zwischen 0 und 2 Nachkommastellen.
Ich habe noch etwas probiert und komme per direkter Eingabe nicht zum Ziel. Deswegen will ich die Daten erstmal als string einlesen, die Kommas durch Punkte ersetzen und das dann in einer neuen Textdatei speichern. So hab ich nur die für mich interessierenden Daten in einer Datei und will die mit dlmread einlesen. Hier mal mein Quelltext dafür.
'Series' ist mein Schlüsselwort, es steht in der Zeile bevor meine Daten kommen und tacht nur einmal in der Datei auf. Alle Zeilen die danach kommen will ich einlesen, bearbeiten und in einer neuen Datei speichern. Leider speichert er mir aber alle Zeilen nebeneinander und das '\n' hilft da auch nicht. Obwohl das doch die Kodierung für ein 'enter' ist. Was muss ich tun damit er mir die Zeilen schön untereinander speichert?
Außerdem hatte ich erst probiert die Tabulatoren, die ein Teil meine Daten trennen mittels strrep() zu Leerzeichen umzuändern.
Ich hab den Fehler gefunden. fwrite() schriebt nur binär, fprintf() dagegen formatiert, dort geht es dann mit dem '\n'.
Naja, vllt hilfts später mal wem.
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
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.