|
Kai1986 |
Forum-Newbie
|
|
Beiträge: 7
|
|
|
|
Anmeldedatum: 12.10.11
|
|
|
|
Wohnort: Wolfsburg
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 12.10.2011, 09:36
Titel: Speichernutzung Matlab
|
|
Ich habe Matlab 2007b mit 32bit auf Windows XP
Leider läuft mir bei der Simulation immer der Speichwer voll (Out of memory), aber er nutzt maximal 2gb Arbeitsspeicher von 4 vorhandenen gb wie kann ich dieses Problem lösen und ihm sagen er soll mehr abrebitsspeicher nutzen. Oder gibt es eine andere Lösung?
|
|
|
|
|
eupho |
Forum-Meister
|
|
Beiträge: 777
|
|
|
|
Anmeldedatum: 07.01.09
|
|
|
|
Wohnort: Marburg
|
|
|
|
Version: R2009b
|
|
|
|
|
|
Verfasst am: 12.10.2011, 09:43
Titel:
|
|
Möglicherweise hat eine Rechenoperation mehr Speicherbedarf als vorhanden ist, dann würde sich das nicht im Speicherverlauf darstellen, weil sofort abgebrochen wird.
Mit einem einfachen Code kannst du sehen, wie der Speicher aufakkumuliert wird:
Achtung (!): Endlosschleife, Abbruch mit Strg + C (Windows).
Alternativ kannst du dir virtuellen Speicher anlegen, der aber massiv langsamer arbeitet, als der RAM.
|
|
|
Andreas Goser |
Forum-Meister
|
|
Beiträge: 3.654
|
|
|
|
Anmeldedatum: 04.12.08
|
|
|
|
Wohnort: Ismaning
|
|
|
|
Version: 1.0
|
|
|
|
|
|
Verfasst am: 12.10.2011, 12:33
Titel:
|
|
Es gibt sehr viele Gründe und ebenso viele Möglichkeiten es zu lösen.
"Simulation" heisst Simulink?
Wenn ja: Wo werden welche Ergebnisse in den Speicher geschrieben? (To Workspace, Scope, Out) und was könnte man davon reduzieren (Ungenutzte Kanäle, Dezimation der Zwischenschritte, Datentypen)?
Andreas
|
|
|
denny |
Supporter
|
|
Beiträge: 3.853
|
|
|
|
Anmeldedatum: 14.02.08
|
|
|
|
Wohnort: Ulm
|
|
|
|
Version: R2012b
|
|
|
|
|
|
Verfasst am: 12.10.2011, 13:24
Titel:
|
|
|
|
JoeFritzegard |
Forum-Newbie
|
|
Beiträge: 3
|
|
|
|
Anmeldedatum: 11.11.11
|
|
|
|
Wohnort: ---
|
|
|
|
Version: ---
|
|
|
|
|
|
Verfasst am: 11.11.2011, 15:39
Titel:
|
|
|
|
|
Je nachdem, was du simulierst, und welche Zwischenwerte du brauchst, kannst du dir ein einfaches Skript schreiben, das dir deine Simulation aufruft und die letzten Zwischenwerte die du brauchst speichert. Matlab beenden, neustarten und Skript wieder ausführen (natürlich die letzten Werte am Anfang laden lassen) ... hab ich mal so gemacht. Geht ganz gut, wenn einem der Prozessspeicher vollläuft, ohne dass der Workspace selber zu groß ist, bzw. wenn du für die weitere Berechnung nicht alle Zwischenergebnisse brauchst.
Wenn die Simulation so zu lange dauern würde, bzw. du 1000mal matlab neu starten müsstest, kann man matlab auch sehr fein übers terminal starten lassen:
START "run1" /b %matlabP% -nosplash -nodesktop -r %scriptName%
(matlabP-> Pfad zu deiner Matlab.exe, scriptName: Das Skript, das du ausführen möchtest)
Das baust du dir in eine Schleife ein, die halt schaut, ob matlab fertig ist, oder nicht. (Ich hab das glaub ich gemacht, indem geprüft wird, ob der letzte Zwischenschritt schon als datei vorliegt oder nicht, weil Matlab selber über irgendeinen 'subprozess' oder so gestartet wird, sodass der normale befehl \wait (wartet mit dem nächsten Terminalschritt bis der vorherige beendet wurde) nicht funktioniert)
Aber ... weiß halt nicht genau, wo dein Problem liegt
|
|
|
|
|
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 - 2024
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.
|
|