|
|
Große Datei teilweise einlesen |
|
beneklaus |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.10.2009, 11:16
Titel: Große Datei teilweise einlesen
|
 |
Hallo,
ich muss aus mehreren große Dateien (bis GB) Informationen (als string) auslesen.
Damit das schneller geht möchte ich die Zeilenanzahl der Datei ermitteln und dann zu einer bestimmten Stelle springen und mir ab dieser die Zeilen auslesen.
Frage: Gibt es einen Befehl die Zeilenanzahl zu ermitteln und dann z.B: mit fgetl erst ab Zeile xxx der Datei das einlesen beginnen?
Bisher ermittel ich die Zeilenanzahl so:
Wie ich erst ab Zeile xxx einlesen kann weiss ich nicht.
Danke für eure Hilfe
beneklaus
|
|
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 21.10.2009, 11:58
Titel:
|
 |
Hallo
mit fseek kannst du den Zeiger positionieren.
Zum Zählen der Zeilen gibt es kein Extra-Befehl.
|
|
|
Schrank |

Forum-Century
|
 |
Beiträge: 203
|
 |
|
 |
Anmeldedatum: 10.07.08
|
 |
|
 |
Wohnort: Berlin
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.10.2009, 13:29
Titel:
|
 |
Hallo beneklaus,
die Anzahl Zeilen kannst du z.B. mit
ohne Schleife herausbekommen.
Als Alternative zu
kannst du bei
die Anzahl zu überspringenden Zeilen angeben. Die option heißt glaube ich headerlines oder so ähnlich.
Grüße Schrank
|
|
|
beneklaus |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 21.10.2009, 18:13
Titel:
|
 |
Hallo Schrank und Denny,
Danke, das tut soweit. Was noch schön wäre:
Mit fseek muss ich mit bytes arbeiten. Leider schwanken die Bytes je Zeile stark-> Kann meinen Bereich nicht stark einschränken.
Headerlines bei textscan tut, kann da jedoch nur con Dateianfang bis Zeile xxx einlesen und nicht von Zeile xxx bis Dateiende.->Jemand eine Idee?
Ansonsten Danke für die Antworten,
beneklaus
|
|
|
Schrank |

Forum-Century
|
 |
Beiträge: 203
|
 |
|
 |
Anmeldedatum: 10.07.08
|
 |
|
 |
Wohnort: Berlin
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.10.2009, 09:39
Titel:
|
 |
Hallo beneklaus,
verstehe dein Problem nicht ganz. Mit Headerlines gibst du die Anzahl zu überspringenden Zeilen an und erst ab dieser Zeile wird eingelesen.
Das willst du doch, oder?
Könntest du ein Minimalbeispiel einstellen, damit ich/wir dein Problem nachvollziehen können.
Grüße
Schrank
|
|
|
Gast |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.02.2011, 14:13
Titel:
|
 |
Gibt es eine Funktion die quasi das Gegenstück zu Headerlines ausführt? Das heisst, dass ich nur bis zu einer gewissen Zeile die Daten einlese...
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 24.02.2011, 14:26
Titel:
|
 |
Hallo
das kannst mit TEXTSCAN erreichen. Schaue dir 3. Parameter an:
Zitat: |
C = textscan(fid, 'format', N) reads data from the file, using the format N times, where N is a positive integer. To read additional data from the file after N cycles, call textscan again using the original fid. |
so kann man bestimmte Anzahl Zeilen einlesen:
|
|
|
Gast |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.02.2011, 19:11
Titel:
|
 |
hmmm... textscan sollte eigentlich auch bei .dat files funktionieren oder?!
Irgendwie funktioniert das bei mir nicht.ich kriege immer ein '[0x1 double]' raus...
Das Hauptproblem besteht bei mir darin, dass mein .dat file insgesamt ca 220MB gross ist (mein Rechner ist dann schon out of Memory...).
Das heisst ich möchte von Anfang an nur einen kleinen Anteil der file importieren (da ich nur die ersten paar tausend Datenpunkte brauche)
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 25.02.2011, 14:44
Titel:
|
 |
Hallo
TEXTSCAN funktioniert mit allen ASCII-Formaten.
Zum Nachvollziehen Bitte den Code immer Eingeben. Und Vielleicht einige Beispiel Zeilen aus deinem DAT-File hier posten
|
|
|
|
|
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.
|
|