Allerdings funktioniert es mit einer 240mb großen Textfile mit gleichem Aufbau einwandfrei.
Ich nutze R2014b, Win 7 64Bit.
>> memory
Maximum possible array: 12082 MB (1.267e+10 bytes) *
Memory available for all arrays: 12082 MB (1.267e+10 bytes) *
Memory used by MATLAB: 885 MB (9.275e+08 bytes)
Physical Memory (RAM): 7963 MB (8.350e+09 bytes)
was genau heißt "abstürzt"? Bekommst du eine Fehlermeldung, oder stürzt MATLAB komplett ab? Wie sieht die Speicherauslastung aus?
Bei importdata versucht MATLAB zu erkennen, welche Struktur die Daten haben. Insbesondere bei so großen Datenmengen wird es deutlich effizienter sein, wenn du die Datenstruktur vorgibst, z.B. mit
textscan
. Falls es um tabellarische Daten geht, ist es häufig einfacher, mit Tables zu arbeiten (
readtable
zum Importieren).
der Speicher wird komplett ausgelastet (8GB) und danach hängt sich der ganze PC auf, sodass ich ihn neu starten muss.
Bei der kleineren Texfile wird es genau auf die richtige Struktur gebracht die ich haben möchte. Deshalb wäre es gut wenn ich weiterhin die datei mit "importdata" importieren könnte, da ich anschließen nach dem importieren nach bestimmten Strings suche.
Gibt es irgendwelche Maßnahmen, damit das funktioniert?
klingt danach, als ob der Rechner zu swappen anfängt.
Entsteht das Problem bereits beim Importieren oder erst beim Verarbeiten der Daten?
Wieviel Speicher wird denn bei der 240 MB-Datei verbraucht?
Zitat:
Deshalb wäre es gut wenn ich weiterhin die datei mit "importdata" importieren könnte,
readtable wäre im einfachsten Fall genau eine Zeile. Wenn man mit sehr großen Dateien arbeitet, ist es eben empfehlenswert, auch besonders dafür geeignete Funktionen zu verwenden.
Zitat:
da ich anschließen nach dem importieren nach bestimmten Strings suche.
Wenn eine oder mehrere Spalten Strings sind und diese wiederholt auftauchen, kann die Verwendung von categorical Arrays sehr viel Speicher sparen.
beim importieren nach 4-5 Sekunden etwa hängt sich der PC auf wenn der Arbeitspeicher voll wird.
Bei der 240MB-Datei benötigt er 4GB Speicher.
Habe es mit
versucht, aber hängt sich genauso auf.
Kann leider die messdaten nicht als binär datei speichern.
Gibt es sonst noch eine möglichkeit die txt-datei zu importieren ohne einen größeren Speicher einbauen zu müssen?
es ist nicht nötig die gesamte Datei einzulesen.
Es sind nur bestimmte Header/Spalten einzulesen die bestimmte Strings beinhalten wie zb."Vdy_vVehicle".
Ist das möglich?
Im vorliegenden Fall klappt das nicht, da die 2. Zeile mit Zahlen deutlich kürzer ist als die 1. - ich vermute mal, das liegt nur an dem Datenausschnitt hier?
Welche MATLAB-Version hast du? Wenn es R2014b oder älter ist, geht das mit dataStore evtl. eleganter.
vielen dank für deinen Versuch!!!
Funktioniert zwar, aber bei anderen Messdaten, welche eine andere Anzahl an Headers haben, müsste man den Code jedes mal anpassen?!
Habe die Version 2014b. Wie würde es denn mit dataStore funktionieren?
Anbei noch die vollständige Text-Datei(Komma-getrennt).
ds = datastore('gomatlab.txt', 'Delimiter', '\t','NumHeaderLines', 2);
Warning: Characters can not be used in both whitespace and delimiter lists.
Removing delimiter chars from whitespace list.
Error using datastore (line114)
Cannot detect TextscanFormats from
...\gomatlab.txt.
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.