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

Vereinfachung von Programmstruckturen

 

falko182
Forum-Anfänger

Forum-Anfänger



Beiträge: 16
Anmeldedatum: 03.11.09
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 01.12.2009, 12:07     Titel: Vereinfachung von Programmstruckturen
  Antworten mit Zitat      
Hallo,

ich hab hier ein Programm geschrieben, in dem ich eine ganze menge Plots machen muss, die auch noch in unterschiedlichen Figures zusammengefasst werden.

Gibt es da eine Möglichkeit, das ganze in einer Schleife zu vereinfachen (von wegen Programmcodeoptimierung???)

hier das Prog, was ich bis jetzt hervorgebracht habe (funktioniert einwandfrei, jedoch ist es recht umständlich das Programm zu erweitern, wenn einmal mehr Werte damit ausgewertet werden sollen)

Code:

%% Plotten der Teilabschnitte

% Plotten des Jahresverlaufs unter Nutzung der Function "datetickzoom" zur
% besseren Analyse der Graphen (beim hineinzoomen wird die Zeitachse
% entsprechend angepasst und detailierter aufgelöst)

%% Abschnitt 1:
figure (2)
% Figure bildschirmfüllend darstellen
set(gcf,'Position',scrsize(1,:));
%plot1: Prognose- und Einspeisezeitreihe
subplot(5,1,1); plot(time1,prog1(:,1),time1, meas1(:,1));datetickzoom('x','HH dd. mmm'); grid;
%Achsengrenzen x und y:
axis([time1(1) time1(end) 0 15000])
% y-Achse: Name; Skalierung; Beschriftung;
ylabel('P [kW]');
%Überschrift
title('Einspeisung und Prognose (Juli)');
legend('Prognose' , 'Einspeisung')

%plot2: Prognosefehlerzeitreihe
subplot(5,1,2); plot(time1, prognoseabweichung1,'.','Color','red');datetickzoom('x','HH dd. mmm'); grid
% y-Achse: Name; Skalierung; Beschriftung;
ylabel('\Delta P [kW]');
%Überschrift
title('Prognosefehler = Prognose - Einspeisung (über Jahreszeit 1. Abschnitt)');
legend(['rmse in %= [' num2str(rmse_1) ']' ],1,'location','NorthEast');

%plot3: Prognosefehler über Prognose
subplot(5,1,3); plot(prog1(:,1),prognoseabweichung1,'.');grid;
%Achsengrenzen x und y:
axis([0 15000 -15000 15000]);
% x-Achse: Name; Skalierung;
xlabel('Prognose [kW]');  set(gca,'XTick',0:1000:15000);
% y-Achse: Name; Skalierung; Beschriftung;
ylabel('Leistung [kW]'); set(gca,'YTick',-15000:5000:15000); set(gca,'YTicklabel',-15000:5000:15000);
%Überschrift
title('Prognosefehler über Prognose (Juli)');

%plot4: Prognosefehler über Messung
subplot(5,1,4); plot(meas1(:,1),prognoseabweichung1,'.');grid;
%Achsengrenzen x und y:
axis([0 15000 -15000 15000]);
% x-Achse: Name; Skalierung;
xlabel('Einspeisung [kW]'); set(gca,'XTick',0:1000:15000);
% y-Achse: Name; Skalierung; Beschriftung;
ylabel('Leistung [kW]');set(gca,'YTick',-15000:5000:15000); set(gca,'YTicklabel',-15000:5000:15000);
%Überschrift
title('Prognosefehler über Einspeisung (Juli)');

%plot5: Histiogrom der Prognoseabweichung
subplot(5,1,5);hist(prognoseabweichung1,150);grid
%Achsengrenzen x und y:
axis([-15000 15000 0 max(ylim)]);
%x_achse: Name; Skalierung
xlabel('Leistung [kW]');set(gca,'xTick',-15000:5000:15000); set(gca,'xTicklabel',-15000:5000:15000);
%y_achse: Name; Skalierung
ylabel('Zeit [h]');
%Überschrift
title('Häufigkeitsverteilung der Pronosefehler (Juli)');

%% Abschnitt 2:
figure (3)
% Figure bildschirmfüllend darstellen
set(gcf,'Position',scrsize(1,:));
%plot1: Prognose- und Einspeisezeitreihe
subplot(5,1,1); plot(time2,prog2(:,1), time2, meas2(:,1));datetickzoom('x','HH dd. mmm'); grid;
%Achsengrenzen x und y:
axis([time2(1) time2(end)+1 0 15000])
% y-Achse: Name; Skalierung; Beschriftung;
ylabel('P [kW]');
%Überschrift
title('Einspeisung und Prognose (August)');
legend('Prognose' , 'Einspeisung')

%plot2: Prognosefehlerzeitreihe
subplot(5,1,2); plot(time2, prognoseabweichung2,'.','Color','red');datetickzoom('x','HH dd. mmm'); grid
% y-Achse: Name; Skalierung; Beschriftung;
ylabel('\Delta P [kW]');
%Überschrift
title('Prognosefehler = Prognose - Einspeisung (August)');
legend(['rmse in %= [' num2str(rmse_2) ']' ],1,'location','NorthEast');

%plot3: Prognosefehler über Prognose
subplot(5,1,3); plot(prog2(:,1),prognoseabweichung2,'.');grid;
%Achsengrenzen x und y:
axis([0 15000 -15000 15000]);
% x-Achse: Name; Skalierung;
xlabel('Prognose [kW]');  set(gca,'XTick',0:1000:15000);
% y-Achse: Name; Skalierung; Beschriftung;
ylabel('Leistung [kW]'); set(gca,'YTick',-15000:5000:15000); set(gca,'YTicklabel',-15000:5000:15000);
%Überschrift
title('Prognosefehler über Prognose (August)');

%plot4: Prognosefehler über Messung
subplot(5,1,4); plot(meas2(:,1),prognoseabweichung2,'.');grid;
%Achsengrenzen x und y:
axis([0 15000 -15000 15000]);
% x-Achse: Name; Skalierung;
xlabel('Einspeisung [kW]'); set(gca,'XTick',0:1000:15000);
% y-Achse: Name; Skalierung; Beschriftung;
ylabel('Leistung [kW]');set(gca,'YTick',-15000:5000:15000); set(gca,'YTicklabel',-15000:5000:15000);
%Überschrift
title('Prognosefehler über Einspeisung (August)');

%plot5: Histiogrom der Prognoseabweichung
subplot(5,1,5);hist(prognoseabweichung2,150);grid
%Achsengrenzen x und y:
axis([-15000 15000 0 max(ylim)]);
%x_achse: Name; Skalierung
xlabel('Leistung [kW]');set(gca,'xTick',-15000:5000:15000); set(gca,'xTicklabel',-15000:5000:15000);
%y_achse: Name; Skalierung
ylabel('Zeit [h]');
%Überschrift
title('Häufigkeitsverteilung der Pronosefehler (August)');

%% Abschnitt 3:
figure (4)
% Figure bildschirmfüllend darstellen
set(gcf,'Position',scrsize(1,:));
%plot1: Prognose- und Einspeisezeitreihe
subplot(5,1,1); plot(time3,prog3(:,1), time3,meas3(:,1));datetickzoom('x','HH dd. mmm'); grid;
%Achsengrenzen x und y:
axis([time3(1) time3(end)+1 0 15000])
% y-Achse: Name; Skalierung; Beschriftung;
ylabel('P [kW]');
%Überschrift
title('Einspeisung und Prognose (September)');
legend('Prognose' , 'Einspeisung')

%plot2: Prognosefehlerzeitreihe
subplot(5,1,2); plot(time3, prognoseabweichung3,'.','Color','red');datetickzoom('x','HH dd. mmm'); grid
% y-Achse: Name; Skalierung; Beschriftung;
ylabel('\Delta P [kW]');
%Überschrift
title('Prognosefehler = Prognose - Einspeisung (September)');
legend(['rmse in %= [' num2str(rmse_3) ']' ],1,'location','NorthEast');

%plot3: Prognosefehler über Prognose
subplot(5,1,3); plot(prog3(:,1),prognoseabweichung3,'.');grid;
%Achsengrenzen x und y:
axis([0 15000 -15000 15000]);
% x-Achse: Name; Skalierung;
xlabel('Prognose [kW]');  set(gca,'XTick',0:1000:15000);
% y-Achse: Name; Skalierung; Beschriftung;
ylabel('Leistung [kW]'); set(gca,'YTick',-15000:5000:15000); set(gca,'YTicklabel',-15000:5000:15000);
%Überschrift
title('Prognosefehler über Prognose (September)');

%plot4: Prognosefehler über Messung
subplot(5,1,4); plot(meas3(:,1),prognoseabweichung3,'.');grid;
%Achsengrenzen x und y:
axis([0 15000 -15000 15000]);
% x-Achse: Name; Skalierung;
xlabel('Einspeisung [kW]'); set(gca,'XTick',0:1000:15000);
% y-Achse: Name; Skalierung; Beschriftung;
ylabel('Leistung [kW]');set(gca,'YTick',-15000:5000:15000); set(gca,'YTicklabel',-15000:5000:15000);
%Überschrift
title('Prognosefehler über Einspeisung (September)');

%plot5: Histiogrom der Prognoseabweichung
subplot(5,1,5);hist(prognoseabweichung3,150);grid
%Achsengrenzen x und y:
axis([-15000 15000 0 max(ylim)]);
%x_achse: Name; Skalierung
xlabel('Leistung [kW]');set(gca,'xTick',-15000:5000:15000); set(gca,'xTicklabel',-15000:5000:15000);
%y_achse: Name; Skalierung
ylabel('Zeit [h]');
%Überschrift
title('Häufigkeitsverteilung der Pronosefehler (September)');

%% Abschnitt 4:
figure (5)
% Figure bildschirmfüllend darstellen
set(gcf,'Position',scrsize(1,:));
%plot1: Prognose- und Einspeisezeitreihe
subplot(5,1,1); plot(time4,prog4(:,1), time4,meas4(:,1));datetickzoom('x','HH dd. mmm'); grid;
%Achsengrenzen x und y:
axis([time4(1) time4(end)+1 0 15000])
% y-Achse: Name; Skalierung; Beschriftung;
ylabel('P [kW]');
%Überschrift
title('Einspeisung und Prognose (Oktober)');
legend('Prognose' , 'Einspeisung')

%plot2: Prognosefehlerzeitreihe
subplot(5,1,2); plot(time4, prognoseabweichung4,'.','Color','red');datetickzoom('x','HH dd. mmm'); grid
% y-Achse: Name; Skalierung; Beschriftung;
ylabel('\Delta P [kW]');
%Überschrift
title('Prognosefehler = Prognose - Einspeisung (Oktober)');
legend(['rmse in %= [' num2str(rmse_4) ']' ],1,'location','NorthEast');

%plot3: Prognosefehler über Prognose
subplot(5,1,3); plot(prog4(:,1),prognoseabweichung4,'.');grid;
%Achsengrenzen x und y:
axis([0 15000 -15000 15000]);
% x-Achse: Name; Skalierung;
xlabel('Prognose [kW]');  set(gca,'XTick',0:1000:15000);
% y-Achse: Name; Skalierung; Beschriftung;
ylabel('Leistung [kW]'); set(gca,'YTick',-15000:5000:15000); set(gca,'YTicklabel',-15000:5000:15000);
%Überschrift
title('Prognosefehler über Prognose (Oktober)');

%plot4: Prognosefehler über Messung
subplot(5,1,4); plot(meas4(:,1),prognoseabweichung4,'.');grid;
%Achsengrenzen x und y:
axis([0 15000 -15000 15000]);
% x-Achse: Name; Skalierung;
xlabel('Einspeisung [kW]'); set(gca,'XTick',0:1000:15000);
% y-Achse: Name; Skalierung; Beschriftung;
ylabel('Leistung [kW]');set(gca,'YTick',-15000:5000:15000); set(gca,'YTicklabel',-15000:5000:15000);
%Überschrift
title('Prognosefehler über Einspeisung (Oktober)');

%plot5: Histiogrom der Prognoseabweichung
subplot(5,1,5);hist(prognoseabweichung4,150);grid
%Achsengrenzen x und y:
axis([-15000 15000 0 max(ylim)]);
%x_achse: Name; Skalierung
xlabel('Leistung [kW]');set(gca,'xTick',-15000:5000:15000); set(gca,'xTicklabel',-15000:5000:15000);
%y_achse: Name; Skalierung
ylabel('Zeit [h]');
%Überschrift
title('Häufigkeitsverteilung der Pronosefehler (Oktober)');
%% Abschnitt 5:
figure (6)
% Figure bildschirmfüllend darstellen
set(gcf,'Position',scrsize(1,:));
%plot1: Prognose- und Einspeisezeitreihe
subplot(5,1,1); plot(time5,prog5(:,1), time5,meas5(:,1));datetickzoom('x','HH dd. mmm'); grid;
%Achsengrenzen x und y:
axis([time5(1) time5(end)+1 0 15000])
% y-Achse: Name; Skalierung; Beschriftung;
ylabel('P [kW]');
%Überschrift
title('Einspeisung und Prognose (November)');
legend('Prognose' , 'Einspeisung')

%plot2: Prognosefehlerzeitreihe
subplot(5,1,2); plot(time5, prognoseabweichung5,'.','Color','red');datetickzoom('x','HH dd. mmm'); grid
% y-Achse: Name; Skalierung; Beschriftung;
ylabel('\Delta P [kW]');
%Überschrift
title('Prognosefehler = Prognose - Einspeisung (November)');
legend(['rmse in %= [' num2str(rmse_5) ']' ],1,'location','NorthEast');

%plot3: Prognosefehler über Prognose
subplot(5,1,3); plot(prog5(:,1),prognoseabweichung5,'.');grid;
%Achsengrenzen x und y:
axis([0 15000 -15000 15000]);
% x-Achse: Name; Skalierung;
xlabel('Prognose [kW]');  set(gca,'XTick',0:1000:15000);
% y-Achse: Name; Skalierung; Beschriftung;
ylabel('Leistung [kW]'); set(gca,'YTick',-15000:5000:15000); set(gca,'YTicklabel',-15000:5000:15000);
%Überschrift
title('Prognosefehler über Prognose (November)');

%plot4: Prognosefehler über Messung
subplot(5,1,4); plot(meas5(:,1),prognoseabweichung5,'.');grid;
%Achsengrenzen x und y:
axis([0 15000 -15000 15000]);
% x-Achse: Name; Skalierung;
xlabel('Einspeisung [kW]'); set(gca,'XTick',0:1000:15000);
% y-Achse: Name; Skalierung; Beschriftung;
ylabel('Leistung [kW]');set(gca,'YTick',-15000:5000:15000); set(gca,'YTicklabel',-15000:5000:15000);
%Überschrift
title('Prognosefehler über Einspeisung (November)');

%plot5: Histiogrom der Prognoseabweichung
subplot(5,1,5);hist(prognoseabweichung5,150);grid
%Achsengrenzen x und y:
axis([-15000 15000 0 max(ylim)]);
%x_achse: Name; Skalierung
xlabel('Leistung [kW]');set(gca,'xTick',-15000:5000:15000); set(gca,'xTicklabel',-15000:5000:15000);
%y_achse: Name; Skalierung
ylabel('Zeit [h]');
%Überschrift
title('Häufigkeitsverteilung der Pronosefehler (November)');
%% Abschnitt 6:
figure (7)
% Figure bildschirmfüllend darstellen
set(gcf,'Position',scrsize(1,:));
%plot1: Prognose- und Einspeisezeitreihe
subplot(5,1,1); plot(time6,prog6(:,1), time6,meas6(:,1));datetickzoom('x','HH dd. mmm'); grid;
%Achsengrenzen x und y:
axis([time6(1) time6(end)+1 0 15000])
% y-Achse: Name; Skalierung; Beschriftung;
ylabel('P [kW]');
%Überschrift
title('Einspeisung und Prognose (Dezember)');
legend('Prognose' , 'Einspeisung')

%plot2: Prognosefehlerzeitreihe
subplot(5,1,2); plot(time6, prognoseabweichung6,'.','Color','red');datetickzoom('x','HH dd. mmm'); grid
% y-Achse: Name; Skalierung; Beschriftung;
ylabel('\Delta P [kW]');
%Überschrift
title('Prognosefehler = Prognose - Einspeisung (Dezember)');
legend(['rmse in %= [' num2str(rmse_6) ']' ],1,'location','NorthEast');

%plot3: Prognosefehler über Prognose
subplot(5,1,3); plot(prog6(:,1),prognoseabweichung6,'.');grid;
%Achsengrenzen x und y:
axis([0 15000 -15000 15000]);
% x-Achse: Name; Skalierung;
xlabel('Prognose [kW]');  set(gca,'XTick',0:1000:15000);
% y-Achse: Name; Skalierung; Beschriftung;
ylabel('Leistung [kW]'); set(gca,'YTick',-15000:5000:15000); set(gca,'YTicklabel',-15000:5000:15000);
%Überschrift
title('Prognosefehler über Prognose (Dezember)');

%plot4: Prognosefehler über Messung
subplot(5,1,4); plot(meas6(:,1),prognoseabweichung6,'.');grid;
%Achsengrenzen x und y:
axis([0 15000 -15000 15000]);
% x-Achse: Name; Skalierung;
xlabel('Einspeisung [kW]'); set(gca,'XTick',0:1000:15000);
% y-Achse: Name; Skalierung; Beschriftung;
ylabel('Leistung [kW]');set(gca,'YTick',-15000:5000:15000); set(gca,'YTicklabel',-15000:5000:15000);
%Überschrift
title('Prognosefehler über Einspeisung (Dezember)');

%plot5: Histiogrom der Prognoseabweichung
subplot(5,1,5);hist(prognoseabweichung6,150);grid
%Achsengrenzen x und y:
axis([-15000 15000 0 max(ylim)]);
%x_achse: Name; Skalierung
xlabel('Leistung [kW]');set(gca,'xTick',-15000:5000:15000); set(gca,'xTicklabel',-15000:5000:15000);
%y_achse: Name; Skalierung
ylabel('Zeit [h]');
%Überschrift
title('Häufigkeitsverteilung der Pronosefehler (Dezember)');


vielen Dank schon einmal für eure Hilfe
_________________

meistens sitzt der Fehler vor dem Computer Smile
Private Nachricht senden Benutzer-Profile anzeigen


derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 01.12.2009, 15:28     Titel:
  Antworten mit Zitat      
Hi,

versuche demnächst vielleicht etwas weniger Code zu posten, aber trotzdem das Problem klar darzustellen. Soweit ich das überblicken kann lohnt sich eine For Schleife auf jeden Fall. Ich würde zunächst den Code für jedes Figure in einer Schleife ausführen. Du brauchst dann für die Verwendung eval() z.B. so:

Code:

prog1=randn(100,1)
prog2=randn(100,1)
for k=1:2
figure
hist(eval(['prog' num2str(k)]));
% subfigures usw.
end
 


Viele Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
falko182
Themenstarter

Forum-Anfänger

Forum-Anfänger



Beiträge: 16
Anmeldedatum: 03.11.09
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 02.12.2009, 11:32     Titel:
  Antworten mit Zitat      
Hallo,

danke für die Hilfe und den Hinweis mit der Länge meines Codes Wink Werd in zukunft mehr darauf aufpassen, nicht so lange texte einzusetellen sondern mein Problem kurzgefasst darzustellen.

Hab das jetzt mal probliert aber weiß nicht, wie ich den Plot dann realisieren soll.

mein erster Versuch sah so aus:

Code:

prog1=randn(100,1);
prog2=randn(100,1);
for k=1:2
figure
hist(eval(['prog' num2str(k)]));
plot(prog);
end
 


allerdings ändert sich der Plot dann nicht.

der zweite Versuch hat zwar bei diesem Beispiel funktioniert aber in meinem Programm dann nicht mehr

Code:

prog1=randn(100,1);
prog2=randn(100,1);
for k=1:2
figure
hist(eval(['prog' num2str(k)]));
plot(hist(eval(['prog' num2str(k)])));
end
 


In meinem Programm bestehen die porg-werte aus einer 2 Spaltigen Matrix, bei der ich nur die erste Spalte betrachte. Wenn ich jetzt das mit dem "hist(eval(['prog' num2str(k)]))" plotten lasse, kommt diese Meldung:
"Cannot call or index into a temporary array"

also scheit es auch so nicht zu klappten, weil "porg1" in meinem Beispiel noch nicht abgespeichert ist, bevor die schleife beendet ist, oder?
_________________

meistens sitzt der Fehler vor dem Computer Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
derOli
Forum-Meister

Forum-Meister


Beiträge: 579
Anmeldedatum: 19.03.08
Wohnort: Leipzig
Version: 2010a
     Beitrag Verfasst am: 02.12.2009, 14:02     Titel:
  Antworten mit Zitat      
Hi, du kannst im Grunde genommen deine Plotbefehle genauso wiederverwenden, bloß das du nicht prog1, prog2 usw. schreibst sondernhalt eval() nutzt. Vielleicht ist es für dich das einfachste das ergebnis von eval zuerst an eine variable zu übergeben, dann kannst du einfach deinen jetzigen Code weiterverwenden, eine andere Möglichkeit ist folgendes:

Code:

prog1=randn(100,2);
prog2=randn(100,2);
for k=1:2
figure
hist(eval(['prog' num2str(k)]));
figure
plot(hist(eval(['prog' num2str(k) '(:,1)'])));
end
 


Das zusätzliche Figure habe ich mal eingebaut, dass auch alle Grafiken gezeichnet werden, hist() ist ja auch ein Plot Befehl und mit dem Plot danach überschreibst du denn ja wieder, deswegen entweder in ein subplot wie du das vorher schon gemacht hast oder als extra figure.

Viele Grüße,

der Oli
Private Nachricht senden Benutzer-Profile anzeigen
 
falko182
Themenstarter

Forum-Anfänger

Forum-Anfänger



Beiträge: 16
Anmeldedatum: 03.11.09
Wohnort: ---
Version: R2009b
     Beitrag Verfasst am: 07.12.2009, 11:11     Titel:
  Antworten mit Zitat      
Sorry, dass ich erst jetzt antworte, hatte aber an einer anderen Stelle meines Projektes noch was zu tun...

Hab das jetzt ausprobiert und es funktioniert...echt toll...bis auf ein paar Kleinigkeiten funktioniert das so, wie ich es haben will. Also richtig toll...danke jungs Wink
_________________

meistens sitzt der Fehler vor dem Computer Smile
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.