Verfasst am: 17.04.2008, 14:13
Titel: Wie stellt man einen Plot in mehreren Farben dar?
Hallo,
ich habe folgendes Problem:
ich möchte die elektrische Leistung eines Autos über der Zeit plotten. Das Auto kann aus einer Batterie und aus einer Brennstoffzelle und aus beiden Aggregaten gleichzeitig fahren. Zudem wird bei negativer Leistung diese in die Batterie zurückgespeist. Es gibt für diesen Wagen also vier verschiedene Zustände. Ich möchte, dass der plot für jeden Zustand eine andere Farbe aufweist, also insgesamt vierfarbig ist. Für die verschiedenen Zustände gibt es einen Vektor, der folgendermaßen aufgebaut ist:
Rekuperation: Wert des Vektors gleich -5
Batteriefahren: Wert des Vektors gleich 0
Brennstoffzelle fahren: Wert des Vektors gleich 5
beide gleichzeitig: Wert des Vektors gleich 10
Der Vektor ist also genauso lang wie mein Zeitenvektor.
Um es kurz zu machen: Ich möchte, dass mein Plot abhängig von Bedingungen verschiedene Farben aufweist. Bspw. soll beim Übergang von negativer Leistung (also Rekuperieren) zu positiver Leistung (also langsame Batteriefahrt) die Farbe wechseln.
eine ähnliche Lösung habe ich auch schon gefunden, Deine ist allerdings bedeutend eleganter.
Code:
for i= 1:length(tout)/1
Pelsollneu(i)=Pelsoll(1*i-0);
toutkurz(i)=tout(1*i-0);
zustandneu(i)=zustand(1*i-0);
% Frage Zustände ab und schreibe bei Vorhandensein des Zustandes einen Wert % in einen neuen Zeit und auch Leistungsvektor. if zustandneu(i)==-5;
Pelsollrek(i)=Pelsollneu(i);
t1(i)=toutkurz(i);
%set(gca,'color','b');
elseif zustandneu(i)==0;
Pelsollbat(i)=Pelsollneu(i);
t2(i)=toutkurz(i);
%set(gca,'color','g');
elseif zustandneu(i)==5;
Pelsollbrenn(i)=Pelsollneu(i);
t3(i)=toutkurz(i);
%set(gca,'color','r');
elseif zustandneu(i)==10;
Pelsollboost(i)=Pelsollneu(i);
t4(i)=toutkurz(i);
%set(gca,'color','c');
end end
Leider habe ich so eine figure, in der ich mir nur einzelne Punkte anschauen kann. Ich möchte aber, dass mir die Leistungen stetig hintereinander weg in unterschiedlichen Farben gezeichnet werden. Wenn ich jetzt einfach den Punkt in den Plot Befehlen wegnehme, passiert Folgendes:
Nehmen wir an, das Auto rekuperiert von 90 bis 120 Sekunden und von 150 bis 160 s. Deine und auch meine Lösung interpolieren nun zwischen 120 und 150 s, obwohl während dieser Zeit gar nicht rekuperiert wird. Ich versuche derzeit einen Ansatz mit einer while Schleife:
Diese while Schleife soll so lange durchlaufen werden, wie sich der Zustand nicht ändert. Dann frage ich den Zustand ab und plotte ihn. Die vorstehende for-Schleife macht mir allerdings einen Strich durch die Rechnung, weil sie halt so oft durchläuft, wie ich es ihr vorschreibe, nämlich length(tout). Ich weiß allerdings nicht, wie ich sonst ein i für die while-Schleife produzieren soll, um praktisch die Ableitung des Zustands-Vektors zu bilden. Freue mich über jede Hilfe.
Herzliche Grüße
Tobias
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.