|
|
Speicheroptimierung & Speicherfreigabe |
|
moongoblin |

Forum-Fortgeschrittener
|
 |
Beiträge: 57
|
 |
|
 |
Anmeldedatum: 29.10.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 08.01.2010, 15:14
Titel: Speicheroptimierung & Speicherfreigabe
|
 |
Hallo,
ich habe ein m-File, das über ein GUI eine nutzerabhängige Zahl von Figures erstellt.
Matlab kommt dabei recht schnell an seine Grenzen, d.h. hängt sich auf, vermutlich aus Speicherplatzmangel.
Deshalb die Fragen:
1. Worauf lege ich grundsätzlich mein Augenmerkt, wenn ich versuche mein bestehendes m-File hinsichtlich der benötigten Speichermenge zu optimieren?
2. Und etwas konkreter: Wie gebe ich nach der Erstellung/Berechnung einer Figure den dafür benötigten Speicher wieder frei, ohne die Figure zu schließen/löschen? D.h. ich sehe die Figure weiterhin, aber die Hintergrunddaten können bereits wieder gelöscht werden.
Sorry, kann mich leider nicht konkreter ausdrücken, hab mit Speichermanagement keine Erfahrung.
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 08.01.2010, 16:02
Titel:
|
 |
Hallo,
zu 1.: die Frage ist sehr vage formuliert. Stichworte: keine überflüssigen Variablen, geschickte Nutzung von Structure und Cell Arrays (falls überhaupt), ...
zu 2.: das ist erst mal nicht möglich. Falls du da jedoch an Speichergrenzen stößt, liegt es nahe, dass die Datenmengen einfach sehr groß sind. Downsampling kann helfen:
Beispiel: x und y sind Vektoren mit 1000000 Einträgen, brauchen also jeweils ca. 8 MB. Beim Plotten mit plot(x,y) übersteigt das jedoch meine verfügbare Auflösung bei weitem. Es kann ausreichen, nur jeden 1000. Eintrag zu plotten, z.B.
Damit würde der Speicherbedarf für die Daten von 16 MB auf 16 KB gedrückt.
Grüße,
Harald
|
|
|
moongoblin |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 57
|
 |
|
 |
Anmeldedatum: 29.10.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.01.2010, 11:52
Titel:
|
 |
Hm, den Hinweis zu Frage 2 kann ich in diesem speziellen Fall vermutlich nicht einfach auf mein Programm anwenden. Aber trotzdem danke, werd mal weiter tüffteln. Vielleicht fällt ja noch jemandem was dazu ein.
|
|
|
Fragewurm |

Forum-Century
|
 |
Beiträge: 180
|
 |
|
 |
Anmeldedatum: 23.09.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.01.2010, 12:19
Titel:
|
 |
Hi moongoblin
Dann stellt sich die Frage was für Daten und in welchen Megen du optimieren möchtest?
Gruss Fragewurm
_________________
Fehler jeglicher Art Dienen zur allgemeinen Belustigung
|
|
|
moongoblin |
Themenstarter

Forum-Fortgeschrittener
|
 |
Beiträge: 57
|
 |
|
 |
Anmeldedatum: 29.10.09
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.01.2010, 14:35
Titel:
|
 |
|
 |
|
Versuche mal nach bestem Wissen darauf zu antworten.
Wie gesagt, über meine GUI können Plots von zeitlichen Zuständen erzeugt werden, u.U. auch sehr viele direkt nacheinander. Dabei geht die RAM-Auslastung bei ca. 50 Plots auf 500MB hoch. U.u. schießt sich Matlab dabei dann auch mal ab, was eher ungünstig ist.
Ich kann die Plots eigentlich nicht in ner geringeren Auflösung o.ä. erzeugen, das fällt also aus. Deshalb würde ich gerne (falls möglich) den zur Erzeugung der Plots nötigen Speicher direkt nach Erstellung wieder löschen und nur das Bild behalten.
Warum ich überhaupt darauf kommen, dass das was bringen könnte: Wenn ich so einen Plot als tif abspeichere hat er ungefähr ne Größe von 1 MB. Aber als Matlab-Plot brauche ich pro Plot ca. 10 MB. Die Differenz würde ich gerne sparen.
Ich schließe aber auch keinesfalls aus, dass meine Programmierung und Nutzung von Variablen noch suboptimal ist. Das werde ich nochmal überprüfen. Ich dachte bloß es gibt vielleicht auch für den beschriebenen Weg nen Befehl o.ä.
Gruß!
|
|
|
|
|
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.
|
|