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

Matlab-Performance beschleunigen

 

Mr.Burns
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 26.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.06.2011, 21:16     Titel: Matlab-Performance beschleunigen
  Antworten mit Zitat      
Hallo liebes Forum,

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.

Lg
Mister Burns
Private Nachricht senden Benutzer-Profile anzeigen


eupho
Forum-Meister

Forum-Meister


Beiträge: 777
Anmeldedatum: 07.01.09
Wohnort: Marburg
Version: R2009b
     Beitrag Verfasst am: 14.06.2011, 21:54     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 14.06.2011, 22:15     Titel: Re: Matlab-Performance beschleunigen
  Antworten mit Zitat      
Hallo Mr.Burns,

Das Abschalten des avast-Virenschutzes reduziert die Zeit von 95 auf 32 Sekunden?! Das ist ja krass.

Das posten des Codes ist wahrscheinlich die beste Lösung. Falls der umfangreich ist, könntest Du zunächst per PROFILEr den zeitraubensten Teil finden.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Mr.Burns
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 26.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.06.2011, 14:43     Titel:
  Antworten mit Zitat      
Hallo,

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.


Code:

function bachelorarbeit_precip

%Command window leeren
clear all
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;

%Januar 1920
januaranomalie1920 = ((precip_ha1(:,:,1429))./(janprecip_mean_jung))*100;
januaranomalie1920schnee = (anteil_schnee1(:,:,1429))./(mean(anteil_schnee1(:,:,2041:12:2389),3))*100;

%plot
figure
pcolor(lon_ha,lat_ha,precip_ha1(:,:,235)')
grid on
shading interp
axis image
colorbar

%Durchschnittswinterniederschläge von 1864/65-2002/03
imax=202;
for i = 64:imax
    mean_winter_precip(i) = nanmean(precip_ha1(i*12:2+i*12));
end
 


ich werd mal weiter versuchen, die Geschwindigkeit zu erhöhen, auf Anregungen freue ich mich jedoch nach wie vor.

lg
monty
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.