Ich habe eine 300MB ASCII-Datei mit 9 Spalten von Daten (Tab-getrennt, Zeichenfolgen und Zahlen). Ein Beispiel ist unten angegeben Linie:Laden Sie ASCII-Dateien in Matlab und speichern Sie sie als .mat
11204226 736539,402697000 192.168.0.104 10,0324 0 1,1313 3,543 3 9
Die Datei gut strukturiert ist und keine Leerzeilen oder fehlerhafte Linien sollten vorhanden sein. Das Format bleibt in der gesamten Datei gleich.
Wenn ich versuche, die Datei in Ubuntu 14.04 zu laden (ImportData). LTS, 6GB RAM, Matlab 2015b friert das System einfach ein. Mein Kollege hat die Datei erfolgreich in Windows 7, 8GB RAM, Matlab 2014b geladen.
Der Plan war jedoch, die Daten in einer .mat-Datei zu speichern, und er kann dies auch nicht tun. Eine Datei wird erstellt, aber die Größe erhöht sich auf über 1 GB, ohne dass jemals ein Ende erreicht wird.
I versucht, die Daten über die graphische Schnittstelle oder den folgenden Code geladen:
tdata = importdata('data.dat');
.mat die Datei als auch über die Schnittstelle Grapical versucht wurde, zu speichern.
Ich nahm an, dass eine 300MB-Datei keine solche Herausforderung darstellen sollte.
Welchen Ansatz würden Sie wählen, um mit der Datei umzugehen?
Ich erwartete, dass die .mat-Datei kleiner als die einfache ASCII-Datei ist.
Außerdem war mein Plan, die Originaldatei nicht in winzigen Teilen aufzuteilen.
UPDATE:
Mein Kollege, der in der Lage war, die Daten zu laden, konvertierte alle String-Einträge in der Struktur in Zahlen. Dies waren die ersten drei Spalten. Abgesehen von der dritten Spalte, die aus IP-Adressen besteht, bin ich mir nicht sicher, warum sie trotzdem als Strings importiert wurden. Mit einer All-Number-Matrix können die Daten gespeichert werden und die resultierende .mat-Datei hat eine Größe von 15 MB. Irgendwie hat der Mix aus Streichern und Zahlen alles vermasselt. Ich weiß immer noch nicht warum.
Nun, Dateigröße sollte kein Problem sein - ich habe in über 10 GB Datei zuvor geladen, und auch wenn der RAM kann nicht passen - Matlab wird es trotzdem zwischenspeichern. Das Problem, das ich vermute, könnte Ihr Code sein - also editieren Sie bitte Ihre Frage und stellen Sie sie auf. – GameOfThrows
Die meisten "automatischen" Importroutinen kämpfen oder ersticken in der dritten Spalte (IP-Adresse, 4 Zahlen getrennt durch 3 '.', was keinem 'numerischen' Standard entspricht). Ich würde die Verwendung von ['textscan'] (http://mathworks.com/help/matlab/ref/textscan.html) empfehlen, um Ihre Daten zu importieren, wenn sie Felder/Spalten unterschiedlichen Typs haben. – Hoki