Verfasst am: 31.12.2013, 13:54
Titel: Einbindung von einem komplizierten txt.File
Ich würde gerne ein txt.File einlesen. Das Problem ist nur, dass die üblich vorgeschlagenen Befehle zum Einlesen nicht funktionieren.
Die Spaltenanzahl in der Datei ändern sich nämlich. Zudem ist in manchen Zeilen nur Text (wie auch in der ersten), welche auch eine andere Spaltenanzahl wie die anderen Zeilen hat.
Mein Wunsch ist es, dass ich die Daten, je nach Spaltenanzahl, extra rausfiltern kann. Sonst muss ich dies nämlich mühsam per Hand machen. Mir würde sowas in der Art gefallen:
Code:
for i=1:AnzahlReihen
if Spaltenanzahl( i ) == GesuchteSpaltenanzahl
A(end+1) = i;
end end
Nur habe ich nirgends gefunden, wie ich die txt-Datei vollständig einlesen kann. Meist liest er mir nur die erste Zeile mit dem Text ein, da die Spaltenanzahl der zweiten Zeile wieder eine andere ist.
Ich bekomme es leider mit "fopen" und "fgetl" nicht hin, da er mir wieder nur die erste Zeile abspeichert.
Als Anhang mal die Beispielsdatei im .txt Format.
Mein Ziel ist es, drei Matrizen daraus zu erhalten:
- die erste enthält die Daten ab der 6. Zeile und endet bei $EndNodes. Diese Matrix enthält 4 Spalten.
- die zweite dann ab dem Index 33 nach $Elements. Diese Matrix hat 8 Spalten und endet, bis die Tabelle zu 9 Spalten wird.
- die letzte dann ab Index 129, eben alle Zeilen, welche 9 Spalten hat.
Ab Zeile 6 erhälst du auf diese Weise in "s" bzw. "tline" einen String mit 7 Zeichen: "1 0 0 0". Hier müsstest du dann z.B. nach den Leerzeichen suchen und die Zahln getrennt in eine gemeinsame Matrix speichern.
Das macht natürlich alles etwas Arbeit ist aber gut machbar.
Vielen Dank nochmals! War mir nicht im klaren, dass man mit "fgetl" auf die nächste Zeile geht.
Leider kann ich B und C nicht im vorneherein initialisieren, da ich deren Größe nicht kenn. Müsste dann vor der Schleife nochmals mit einer Schleife suchen... denke, da spare ich mir nichts.
Und beim Befehl
schneller ist. Aber damit funktionierts nichts, es kommen nur NaN's.
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.