im Zuge meiner Bachelorarbeit muss ich mehrere Abbildungen erstellen.
Das Programm ist soweit kein Problem, alles passt.
Das Programm dazu läuft jedoch immer rund 95sec, obwohl eh schon außer Matlab kein anderes Programm oder Browser geöffnet sind.
Das ist mir doch etwas zu lang. Stellt man den avast-Virenschutz ab, so verringert sich die Laufzeit schon auf 32sec.
Wisst ihr noch andere Möglichkeiten, die Laufzeit eines Programms generell zu verkürzen. (auf dem Laptop meines Vaters habe ich 5-10sec geschafft).
Vielleicht irgendwelche Matlab-internen Speicher entrümpeln oder andere Prozesse währenddessen stoppen?
(Wenn es hilft, kann ich auch das Programm posten)
Vielen Dank für eure Hilfe.
Ein Großteil der Rechenzeit (oftmals Größenordnungen) lässt sich durch marginale Veränderungen des Codes (z.B. Vektorisierung) verwirklichen. Schau dir doch den Code mal mit dem Profiler an, der zeigt dir genau, wo wieviel Rechenzeit verbraten wird, ergo wo Potenzial ist, den Code zu verbessern.
also das is mal der Code. Am meisten Zeit verbraucht er laut Profiler beim Laden der Mat-Datei histalp_precip.mat (~38% der Zeit). Dann folgt der plot pcolor (~35%) und die Mittelwertberechnung aus den Variablen.
Immerhin sind lon_ha und lat_ha ja doch Matrizen mit 71x179-Ausmaß.
Die anderen drei Variablen haben jeweils 179x71x2436 Ausmaße (sind 3d-Matrizen).
Hilft es vielleicht, fünf mal den load-Befehl untereinander zu schreiben , also jede Variable einzeln einzulesen. Denn nachher brauch ich sie ja doch alle zum Plotten.
%Command window leeren
clearall clc
%Daten vom NAO-Index hochladen
format short
load('NAO-Index.mat','NAO_Anteil_STABW');
disp('NAO-Winter-Index von 1865-2003 eingelesen und Anteil an Standardabweichung berechnet')
%Einlesen der Niederschlags- und Schneedaten aus HISTALP
load('histalp_precip.mat','lon_ha','lat_ha','precip_ha1','precip_solid_ha1','anteil_schnee1');
disp('Niederschlags- und Schneedaten für gesamten Zeitraum eingelesen')
%durchschnittliche Januarniederschläge im Zeitraum 1/1801 - 1/1810
janprecip_mean_gesamt = mean(precip_ha1(:,:,1:12:109),3);
%durchschnitliche Januarniederschläge im Zeitraum 1/1971 - 1/2000
janprecip_mean_jung = mean(precip_ha1(:,:,2041:12:2389),3);
%Niederschlagsanomalie in der ersten Dekade des 19.Jahrhundert
diff_mean_janprecip = ((janprecip_mean_gesamt)./(janprecip_mean_jung))*100;
ich werd mal weiter versuchen, die Geschwindigkeit zu erhöhen, auf Anregungen freue ich mich jedoch nach wie vor.
lg
monty
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.