WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Umgang mit großer Datenmenge

 

need_Help

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.03.2013, 12:25     Titel: Umgang mit großer Datenmenge
  Antworten mit Zitat      
Hallo,

ich bin momentan dabei, eine Datenauswertung zu programmieren. Hiefür muss ich 160 Dateien einlesen, die jeweils ca. 600 Spalten und ca. 2000 Zeilen haben. Jede der Dateien ist ca. 12 MB groß.

Diese werden dann Spaltenweise verarbeitet. Das Ergebnis dieser Berechnung möchte ich mir irgendwo abspeichern (Datenmenge pro Spalte ca. [200x1]).

Das funktioniert so weit schon mal, braucht aber für die Berechnung momentan fast 24 Stunden.

Mir ist klar, dass ich hierbei an die Speicherplatzgrenzen von Matlab stoße. Frage ist wie ich durch evtl. geschicktes Abspeichern der Ergebnisse bzw. vorherigem Formatieren der Daten meine Bearbeitungszeit reduzieren kann.

Ist es z.B. sinnvoll nach der Berechnung einer Datei die Ergebniss-Matrix zu speichern und für die nächste Zeile eine neue Datei zu schreiben? Welches Speicherformat ist hier am sinnvollsten?

Oder kann ich den Speicherbedarf verringern? Formatiere meine Daten momentan ins single-format, um weniger Speicherplatz zu benötigen.

Für Tips und Tricks bin ich sehr dankbar, falls noch Fragen sind oder etwas unklar ist, versuche ich gerne dieses deutlicher zu erläutern.

Viele Grüße
need_Help


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 26.03.2013, 12:58     Titel: Re: Umgang mit großer Datenmenge
  Antworten mit Zitat      
Hallo need_Help,

Wenn ich Dich richtig verstehe, enthalten die Dateien bis zu 2000 Spalten zu je 200 Elementen. Wenn man das als DOUBLE speichert, benötigt dies 3.2 MB. Wenn Du dann alle 160 Dateien gleichzeitig einliest, sind dies 512 MB. Das sollte das RAM eines halbwegs modernen Rechners nicht sprengen.

Wieso benötigen die Berechnungen mit diesen überschaubaren datenmengen einen ganzen Tag? Wenn es nicht um eine teure Parameterschätzung oder Optimierung geht, vermute ich ein programm-technisches Problem, wie etwas fehlende Pre-Allocation. Das liesse sich dann verbessern, wenn Du zunächst mit dem Profiler die größeten Zeit-Verschwender suchst und den relevanten Teil hier postest - am besten so, dass er mit Test-Daten (rand()!) lauffähig ist.

Das Abspeichern im ASCII-Format ist ungemein aufwändiger als ein binäres Format: Während man für die Konvertierung von ASCII zu DOUBLE (fast) jede Ziffer mit 10 Multiplizieren und eine Potenzierung benötigt, muss man für das Einlesen aus einem Binär-File nur die 8 Bytes kopieren. Sowie die Zahlen mehr als 8 Ziffern haben, ist dies auch noch platzsparender auf der Festplatte.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.