|
|
große mat datei-->nur bestimmte vektoren nötig |
|
xPashAx |

Forum-Guru
|
 |
Beiträge: 294
|
 |
|
 |
Anmeldedatum: 18.05.09
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.05.2010, 09:30
Titel: große mat datei-->nur bestimmte vektoren nötig
|
 |
hi leute,
ich hab ne große mat datei, sprich 1 bis 2 GB.
ich brauche aber nur bestimmte vektoren von der datei.
sooo muss man zuerst die ganze mat datei laden oder kann man auch nur die bestimmten vektoren ins workspace laden(also aus einer mat datei).
... und noch ne frage wie kann ich meinen speicher platz schonen.
hab gelesen das
nicht so effektiv sein soll.
ich bedank misch schon vorraus.
|
|
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 07.05.2010, 09:48
Titel:
|
 |
Hallo
du kannst auch nur bestimmte Variablen aus MAT-File laden
z.B mein MAT-File hat Var1 ,Var2, Var3
|
|
|
xPashAx |
Themenstarter

Forum-Guru
|
 |
Beiträge: 294
|
 |
|
 |
Anmeldedatum: 18.05.09
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.05.2010, 10:09
Titel:
|
 |
heisst das dann ich schone so mein speicher???
... und denny noch ne simple frage.
so wenn ich tgesMod so überschreibe spart man so auchn speicher oder wird mal tgesMod wie oben und tgesMod wie unten virtuell gespeichert.
|
|
|
Titus |

Forum-Meister
|
 |
Beiträge: 871
|
 |
|
 |
Anmeldedatum: 19.07.07
|
 |
|
 |
Wohnort: Aachen
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.05.2010, 11:13
Titel:
|
 |
Hallo,
tgesMod ist eine eigene Variable und teilt sich keinen Speicherplatz mit tges. Ist denn tges so groß, dass Du Dir darüber Sorgen machst? Dann könntest Du natürlich auch sowas machen:
Ciao,
Titus
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 07.05.2010, 11:33
Titel:
|
 |
Es gibt dafür keine Garantie, das Problem ist dass Matlab packt die Daten in MAT-Files um bis zu 8 Fache ihrer tatsächlicher Größe. Das ist schön und gut für die Festplatte, aber nicht für den Arbeitsspeicher. Da beim Laden wird es ja in Hauptspeicher versucht zu entpacken. Das reserviert von Unmengen von Speicher. Aber erst bei großen Datenmengen merkt man wirklich diesen Effekt.
Also große MAT-Files möglichst mit Option -v6 abspeichern, also unkomprimiert.
Zitat: |
tgesMod=tges(tges>=tmaxAnfang & tges<=tminEnde);
tgesMod=tgesMod(1):0.02:tges(end)
so wenn ich tgesMod so überschreibe spart man so auch Speicher oder wird mal tgesMod wie oben und tgesMod wie unten virtuell gespeichert.
|
Es hängt davon ab, ob du es tgesMod anderer Variable vor dem Überschreiben zuweist, dann wird Kopie erstellt, ansonsten wird komplett überschrieben. Natürlich Größe hängt auch von Datentyp double ist 2 Mal so groß wie integer
|
|
|
xPashAx |
Themenstarter

Forum-Guru
|
 |
Beiträge: 294
|
 |
|
 |
Anmeldedatum: 18.05.09
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.05.2010, 12:22
Titel:
|
 |
meine frage ist eigentlich :
ich lade einen vektor die 100mb ist danach tu ich sie mit einem vektor überschreiben die 10mb ist.
meine frage ist hab ich nun die 90 mb zur verfügung oder ist die 100mb komplett weg?
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 07.05.2010, 12:48
Titel:
|
 |
Hallo
das kannst du doch selbst ausprobieren
Ich poste gleich mal mal das Ergebnis,
vor dem Belegen habe ich 2317MB Speicher zu Verfügung
dann 100 MB belegt, bleibt 2221MB Speicher zu Verfügung
dann überschreibe mit 10 MB 2307MB Speicher zu Verfügung
Also daraus folgt: ja es werden 90 MB wieder frei.
Zitat: |
VOR DEM BELEGEN:
Memory available for all arrays: 2317 MB (2.429e+009 bytes) **
Memory used by MATLAB: 450 MB (4.714e+008 bytes)
100 MB BELEGT:
Name Size Bytes Class Attributes
A 1x12500000 100000000 double
Memory available for all arrays: 2221 MB (2.329e+009 bytes) **
Memory used by MATLAB: 545 MB (5.714e+008 bytes)
MIT 10MB ÜBERSCHRIEBEN:
Name Size Bytes Class Attributes
A 1x1250000 10000000 double
Memory available for all arrays: 2307 MB (2.419e+009 bytes) **
Memory used by MATLAB: 459 MB (4.814e+008 bytes)
|
|
|
|
xPashAx |
Themenstarter

Forum-Guru
|
 |
Beiträge: 294
|
 |
|
 |
Anmeldedatum: 18.05.09
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.05.2010, 12:59
Titel:
|
 |
vielen dank denny warst ne große hilfe.
...und was kannst du über
[/code]
pack
[code]
sagen.
in einem beitrag haste geschrieben das es doch net so nützlich ist, soweit ich es weiss.
ciao
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 07.05.2010, 13:59
Titel:
|
 |
Die Idee hinter PACK ist gut, da aber es nur aus Workspace aufrufbar ist, finde ich in diesen Befehl nutzlos.
Der Befehl sollte den Speicher wieder kompakter schreiben.
Also man hat den Speicher mit mehreren Variablen belegt, dann löscht man
einige dann belegt man wieder. Irgendwann entstehen Zellen in Speicher die zwar frei sind, werden aber nicht belegt weil zusammenhängender Speicher wird gesucht.
Also nimmt man PACK, der schreibt alle Variablen in Datei, dann löscht komplett den Speicher und dann werden die Variablen wieder nachgeladen und in Speicher nach einander geschrieben. Danach hat man wieder größeren zusammenhängenden Speicher
Eigentlich ist der Prinzip von PACK wie folgt:
|
|
|
xPashAx |
Themenstarter

Forum-Guru
|
 |
Beiträge: 294
|
 |
|
 |
Anmeldedatum: 18.05.09
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.05.2010, 14:11
Titel:
|
 |
sorry denny ist immer noch net klar.
nehmen wir an ich hab daten1.mat geladen.
jetzt ist der ganze inhalt im workspace.
was passiert wenn ich jetzt
eingebe ? mein workspace ist ja immer noch voll soweit ich es sehe.
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 07.05.2010, 14:35
Titel:
|
 |
Es werden Temporär alle Variablen in File daten1.mat, Speicher wird geleert und dann werden die Variablen zurückgeladen. Dieses Mal werden diese aber kompakt geschrieben.
Dadurch wird es nicht mehr freien Speicher, sondern freie Blöcke,welche zusammenhängend sind.
z.B das ist mein Speicher 3 Einzelblöcke
|voll|voll|leer|voll|voll|leer|voll|leer|
Ich will es mit Variable belegen dass 2 Blöcke groß ist, es gibt aber keine Blöcke die nebeneinander frei sind(zusammenhängende Blöcke).
=> Out of Memory
nach pack, bekomme ich 3 Zusammenhängende Blöcke
also kann mit Variablen die 2 Blöcke groß ist den Speicher belegen.
|voll|voll|voll|voll|voll|leer|leer|leer
lese doch Dokumentation zu PACK, da steht doch alles
Zuletzt bearbeitet von denny am 07.05.2010, 14:47, insgesamt einmal bearbeitet
|
|
|
xPashAx |
Themenstarter

Forum-Guru
|
 |
Beiträge: 294
|
 |
|
 |
Anmeldedatum: 18.05.09
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.05.2010, 14:44
Titel:
|
 |
jetzt ist es klar danke denny
|
|
|
xPashAx |
Themenstarter

Forum-Guru
|
 |
Beiträge: 294
|
 |
|
 |
Anmeldedatum: 18.05.09
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.05.2010, 15:26
Titel:
|
 |
noch ne letzte frage. die logik hab ich verstanden.
daten1.mat wird geladen und danach einige variablen gelöscht.
dann reicht es doch nur
zu schreiben. wieso noch einen filename
hmm noch was wenn ich zB pack daten2.mat schreibe dann ist ja die daten2.mat nirgendwo zu finden.
heute hab ich wohl euer nerven ziemlich strapaziert :/
|
|
|
denny |

Supporter
|
 |
Beiträge: 3.853
|
 |
|
 |
Anmeldedatum: 14.02.08
|
 |
|
 |
Wohnort: Ulm
|
 |
|
 |
Version: R2012b
|
 |
|
|
 |
|
Verfasst am: 07.05.2010, 16:25
Titel:
|
 |
|
 |
|
Zitat: |
noch ne letzte frage. die logik hab ich verstanden.
daten1.mat wird geladen und danach einige variablen gelöscht.
dann reicht es doch nur PACK zu schreiben. wieso noch einen filename
|
Muss man nicht es reicht in der Tat nur PACK zu schreiben.
Der Name wird dann automatisch generiert. Wozu es gut ist, kann ich nicht beantworten.
Zitat: |
hmm noch was wenn ich zB pack daten2.mat schreibe dann ist ja die daten2.mat nirgendwo zu finden.
|
Obwohl in der Hilfe steht, dass PACK in Aktuellen Verzeichnis schreibt, stimmt es in Wirklichkeit nicht mehr, es wird in Temporären Ordner kurzzeitig gespeichert.
Achtung: Es wird nur KURZZEITIG gespeichert, also am Ende der Bearbeitungskette wird die Datei wieder gelöscht.
(MAT Speichern-> Memory leeren-> MAT Laden->MAT Löschen)
Den Temporären Verzeichnis findet man über TEMPDIR
Du kannst dir auch diesen Prozess in Windows Task Manager beobachten:
1) Öffne Task-Manager auf Reiter Systemleistung
2) jetzt in Matlab Konsole folgendes eingeben:
Dann siehst du kurzzeitigen Sprung von Speicher nach unten, wo es geleert war und dann wieder nach oben, wo MAT-Datei wieder geladen wurde
Viel Spaß
|
|
|
xPashAx |
Themenstarter

Forum-Guru
|
 |
Beiträge: 294
|
 |
|
 |
Anmeldedatum: 18.05.09
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 07.05.2010, 18:31
Titel:
|
 |
super denny vielen dank für die ziemlich ausführliche erklärung.
...schönes wochende
|
|
|
|
Gehe zu Seite 1, 2 Weiter
|
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.
|
|