|
|
extrem große csv spaltenweise einlesen |
|
Franz |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 22.05.2010, 16:00
Titel: extrem große csv spaltenweise einlesen
|
 |
|
 |
|
Hallo goMatlab Community,
ich bin ein Matlab-Neuling und habe ein Problem ganz am Anfang meiner Analysen, welche ich mit Matlab realisieren möchte.
Meine Daten welche ich analysieren möchte sind in einer csv Datei gespeichert. Diese kann durchaus die Gigabyte Grenze überschreiten.
Meine Frage ist nun wie ich am besten die Daten in Matlab importieren kann. Dabei bin ich auf mehrere Probleme gestoßen:
* die erste Zeile besteht aus den Namen der Spalten die restlichen Zeilen aus Integer werten. Anzahl der Zeilen ist nicht bekannt
* beim Versuch alle Daten auf einmal zu Laden gab es einen out of Memory Fehler
* der grafische Import scheint mit der großen Datenmenge auch nicht klarzukommen
Leider konnte ich bisher nicht mit den gefundenen Ansätzen die Daten einlesen. Daher meine Frage ob jemand einen Tipp hat. Große Datenmengen mittels csv Dateien sollte ja eigentlich recht häufig vorkommen.
Die CSV Datei ist wie folgt aufgebaut:
Zeit; ValueName1, ValueName2,
ValueNameN
0,1,2,...,n
5,4,2,...,n
...........
m,3,7,.. n
Besten Dank
Franz
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 22.05.2010, 19:39
Titel:
|
 |
Hallo,
ich würde TEXTSCAN verwenden.
Bei dieser Datengröße darauf achten, Integer auch als Integer (z.B. %d8 oder %u8; auf Wertebereich achten) einzulesen. Wenn nicht alle Spalten (gleichzeitig) benötigt werden, kann man damit evtl. auch noch arbeiten.
Grüße,
Harald
|
|
|
Franz |
Gast
|
 |
Beiträge: ---
|
 |
|
 |
Anmeldedatum: ---
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.05.2010, 13:29
Titel:
|
 |
Hallo Harald,
danke für den Tipp. Mit Textscan hatte ich es noch nicht getestet. Habe dazu aber auch noch eine Frage. Ich habe es mal mit einer Test-Csv Datei versucht, welche nicht die größe der Orginal Dateien hat. Dabei habe ich es leider nicht geschafft die CSV Datei richtig einzulesen. Ich habe immer einen <300x1, uint8> Vektor bekommen. Ist es möglich mittels einen weiteren delimiter(zusätzlich zu ',') den zeilenumbruch in der CSV datei dazu zu verwenden dass eine Matrix ensteht.
(Also so dass es so aussieht:
0,1,2,...,n
5,4,2,...,n
...........
m,3,7,.. n
statt:
0,1,2,...n,5,4,2,...n,...........,m,3,7,...n)
Wie gesagt ich bin Neuling in Matlab und hab damit keinerlei Erfahrung.
Vielen Dank
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 24.05.2010, 21:59
Titel:
|
 |
Hallo,
ich würde es mit %*[^\n] probieren, siehe Example 4 in
Auch mal ruhig die anderen Beispiele anschauen, die mit csv-Dateien arbeiten. Ansonsten bitte:
- bisherigen Code posten
- Beispiel-CSV - Datei anhängen.
Grüße,
Harald
|
|
|
|
|
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.
|
|