Hi, habe erst gerade mit Matlab angefangen. Das hier ist mein erster Beitrag, vielleicht kann mir jemand weiterhelfen.
Also, ich mache mit Matlab einen Gridsearch, d.h. ich suche über ein grid hinweg den kleinsten Wert. Das Grid allerdings wird mit vier Loops erstellt, weil ich die optimale Kombination aus vier Zeitpunkten t suche und zwar innerhalb eines Zeitraumes von 40 Jahren. Jede Kombination erzeugt einen Output-Wert, der ins Grid soll. Bis zur Minimierung komme ich aber gar nicht, weil Matlab seit über 12 Stunden an dem Grid bastelt.
Im Laufe der Loops wird eine vierdimensionale Matrix erstellt, so dass alle möglichen Kombinationen abgebildet werden.
Habe das ganze auch schon mit einem kleinerern Test-Datensatz versucht und alles hat optimal geklappt, d.h. mein Script ist fehlerfrei?! Beim Test hatte ich so 10-12 mögliche Realisationen (jahre) für die 4 Zeitpunkte. Das Programm hat das Grid erstellt, den kleinsten Wert gefunden und mir die optimalen vier Zeitpunkte ausgespuckt.
Meine Frage: Ist das normal, das Matlab dafür so lange braucht? Ich hab ja auch keine Ahnung, ob ich abbrechen sollte oder Matlab weiter arbeiten lassen sollte, weil ich nicht weiß, wie lange das dauern wird. Was kann ich ändern, damit das Programm schneller wird?
Code:
%Größe der Daten automatisch erfassen (m=Jahre) [m,n] = size(data);
for ts = 1:(m-2);
for tp1 = (ts+1):(m-1);
for tp2 = tp1:(m-1);
fortf = (tp2+1):m;
Ansonsten verstehe ich den Sinn des Codes auf den ersten Blick zu wenig, als dass ich Verbesserungen vorschlagen könnte. Halt, doch: Berechnungen, die von inneren Schleifen unabhängig sind, vorziehen, damit sie nicht wiederholt ausgeführt werden. Z.B.
ist von tp1, tp2, tf unabhängig und kann herausgezogen werden.
P.S.: Du kannst dir ja auch ein DISP-Statement oder eine Fortschrittsanzeige (waitbar) in das Programm einbauen, damit du eine Ahnung hast, wie lange es insgesamt dauern wird.
Grüße,
Harald
Frusciante
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 18.12.2009, 15:24
Titel:
Danke, Harald. Hab die entsprechenden Abstätze aus den Schleifen ausgelagert und das Grid vordefiniert. Leider kommt das Programm immer noch nicht schneller voran - sagt zumindest der Waitbar (danke dafür, kannte ich noch nicht).
Kann also weitere Anregungen gebrauchen...
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
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.