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

Speicheroptimierung & Speicherfreigabe

 

moongoblin
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 57
Anmeldedatum: 29.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.01.2010, 15:14     Titel: Speicheroptimierung & Speicherfreigabe
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.01.2010, 16:02     Titel:
  Antworten mit Zitat      
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.
Code:
plot(x(1:1000:end), y(1:1000:end))


Damit würde der Speicherbedarf für die Daten von 16 MB auf 16 KB gedrückt.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
moongoblin
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 57
Anmeldedatum: 29.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2010, 11:52     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Fragewurm
Forum-Century

Forum-Century


Beiträge: 180
Anmeldedatum: 23.09.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2010, 12:19     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
moongoblin
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 57
Anmeldedatum: 29.10.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.01.2010, 14:35     Titel:
  Antworten mit Zitat      
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ß!
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.