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

Bei "whos" bzw. "who" kommt nix

 

Mr.Burns
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 26.02.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2011, 18:59     Titel: Bei "whos" bzw. "who" kommt nix
  Antworten mit Zitat      
Hallo liebes Forum,


ich habe untenstehendes Programm geschrieben.
es geht grob darum, für den Alpenraum durchschnittliche NS-Mengen, Temperaturen und Schneemengen zu plotten. Klappt auch alles super. Allerdings möchte ich bei den Plots öfter ein paar Kleinigkeiten verändern (Schriftgröße, Colorbar, Legende...).
Nun zum Problem: ich muss dann immer das gesamte Programm durchlaufen lassen, um die produzierte Grafik zu sehen. Das dauert etwa 3min. Jetzt dachte ich mir, es reicht doch auch, es einmal laufen zu lassen und ab dann immer nur noch den pcolor-Befehl zu ändern und ins Command Window zu kopieren, denn die vorher berechneten Variablen müssten ja eigentlich alle im Workspace gespeichert sein. Sind sie aber nicht.
Gebe ich "whos" oder "who" ein, so passiert nix.

Könnt ihr mir helfen?

Code:

function bachelorarbeit_Klima

%Daten einlesen
load('histalp_temp.mat','lon_ha','lat_ha','temp_ha1','height_ha1');
load('histalp_precip.mat', 'lon_ha','lat_ha','precip_ha1','anteil_schnee1');
disp('Temperatur- und Niederschlagsdaten der GAR für gesamten Zeitraum eingelesen')

%--------------------------------------------------------------------------
%--------------------------------------------------------------------------
%Durchschnitte und Änderungen der Klimavariablen berechnen
%--------------------------------------------------------------------------
%--------------------------------------------------------------------------

%durchschnittlichen Winterniederschlag, Wintertemperatur und Schneeanteil von 1801/02 - 2002/03 berechnen
%Temp und Schneeanteil könnten stimmen, NS noch nicht
for i=1:202
winterprecip_mean_1801_2003 = precip_ha1(:,:,nanmean(i*12:2+i*12)); %??????????
wintertemp_mean_1801_2003 = temp_ha1(:,:,nanmean(i*12:2+i*12));
winterschnee_mean_1801_2003 = anteil_schnee1(:,:,nanmean(i*12:2+i*12));
end
disp('Winterniederschlag, Wintertemperatur und Schneeanteil von 1801/02 - 2002/03 berechnet')

%durchschnittlichen Winterniederschlag, Wintertemperatur und Schneeanteil von 1970/71 - 1999/00 berechnen
for j=170:199
winterprecip_mean_1970_2000 = precip_ha1(:,:,nanmean(j*12:2+j*12)); %????????????
wintertemp_mean_1970_2000 = temp_ha1(:,:,nanmean(j*12:2+j*12));
winterschnee_mean_1970_2000 = anteil_schnee1(:,:,nanmean(j*12:2+j*12));
end
disp('Winterniederschlag, Wintertemperatur und Schneeanteil von 1970/71 - 1999/00 berechnet')

%Niederschlagsänderung in Prozent im Zeitraum 70/71-99/00 im Vergleich zu 1801/02-2002/03
winterprecip_diff = (1-((winterprecip_mean_1970_2000)./(winterprecip_mean_1801_2003)))*-100; %???????
disp('Niederschlagsänderung in % berechnet')

%Temperaturänderung in K im Zeitraum 70/71-99/00 im Vergleich zu 1801/02-2002/03
wintertemp_diff = (wintertemp_mean_1970_2000)-(wintertemp_mean_1801_2003);
disp('Temperaturänderung in K berechnet')

%Schneeanteilsänderung im Zeitraum 70/71-99/00 im Vergleich zu 1801/02-2002/03
winterschnee_diff = (1-((winterschnee_mean_1970_2000)./(winterschnee_mean_1801_2003)))*-100;
disp('Schneeanteilsänderung in % berechnet')

%{save bachelorarbeit_Klima.mat winterschnee_diff winterschnee_mean_1970_2000 winterschnee_mean_1801_2003...
%    wintertemp_diff wintertemp_mean_1970_2000 wintertemp_mean_1801_2003...
 %   winterprecip_diff winterprecip_mean_1970_2000 winterprecip_mean_1801_2003...
  %  lon_ha lat_ha precip_ha1 anteil_schnee1 height_ha1
%--------------------------------------------------------------------------
%Grenzverlauf plotten
% ----Grenz data downloaded from:
% http://rimmer.ngdc.noaa.gov/mgg/coast/getcoast.html
% load World Data Bank II Data:
intbnd = load('grenzen.txt');
figure('Position',[100 100 600 600])
axes('Position',[0.1 0.1 0.8 0.8])
hold on
h = plot(intbnd(:,1),intbnd(:,2),'k','LineWidth',1.5);
box on;
xlim([4 19]); ylim([43 49])
xlabel('Longitude (deg E)')
ylabel('Latitude (deg N)')
hold on
h1 = pcolor(lon_ha,lat_ha,wintertemp_mean_1801_2003(:,:,1)');
title('Durchschnittstemperaturen im Winter von 1801/02 - 2002/03')
colorbar
axis image
grid on
shading interp
 








Vielen Dank
lg
Monty
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: 20.06.2011, 01:04     Titel: Re: Bei "whos" bzw. "who" kommt nix
  Antworten mit Zitat      
Hallo Mr.Burns,

Alle Variablen innerhalb einer Funktion bleiben innerhalb der Funktion. Wenn Du die Werte ausserhalb benötigst, musst Du sie als Outputs definieren.

Du könntest auch die fertig berechneten Werte per SAVE in ein MAT-File schreiben und sie beim Wiederholten Durchlauf des Programms wieder einlesen, statt sie zeitrauben neu zu berechnen.

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: 20.06.2011, 09:21     Titel:
  Antworten mit Zitat      
Hallo Jan,

danke für die Antwort. Ja die Lösung ist plausibel. Zumal sich dann auch die Rechenzeit von 3min auf 10s verkürzt. So hab ich es dann mal ausprobiert. Geht bestens. Smile
Eine kleine Zusatzfrage hätte ich dann noch. Ich habe mal das gesamte Skript in das Command Window kopiert und ausführen lassen. Dann waren alle Variablen im Workspace vorhanden. So weit so gut.
Kann es sein, dass Matlab anschließend den "out of memory" Fehler meldet, wenn man danach nochmal das Skript aus dem Editor heraus ausführen lässt? Weils dann halt einfach zu viel Speicher braucht?

Nochmals danke für die Hilfe

lg
Monty
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: 20.06.2011, 10:06     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Kann es sein, dass Matlab anschließend den "out of memory" Fehler meldet, wenn man danach nochmal das Skript aus dem Editor heraus ausführen lässt? Weils dann halt einfach zu viel Speicher braucht?

Ja. Du hast dann alle Variablen doppelt im Speicher, bräuchtest also doppelt so viel Speicher. Und wenn du den nicht hast, gibts die Fehlermeldung. Abhilfe: im Command Window
Code:

eingeben. Damit werden die Variablen gelöscht, und der Speicher sollte wieder zur Verfügung stehen.

Grüße,
Harald
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.