Verfasst am: 19.05.2011, 09:40
Titel: Punkte für Plot verbinden - keine Schleife möglich
Hallo zusammen,
ich habe mir per Simulink eine kleine Struktur gebastelt, bei der ich immer einen Step vorgebe und dann schauen will, wie diverse Parameter darauf reagieren.
Für jeden Step, den ich plotte, rechne ich dann immer einen dazu passenden Wert aus.
Da ich aber immer den Step manuell vorgeben muss, lasse ich danach meinen Code laufen. Nun möchte ich aber die einzelnen Werte, die ich passend zu den Steps berechne, zu einer Linie verbinden.
D.h. nachdem ich meinen zweiten Step eingegeben haben, existieren also zwei Punkte im Figure und diese zwei Punkte sollen verbunden werden. Nach meinem dritten Step soll der dazu passende dritte Wert mit dem zweiten Wert berechnet werden usw.
Normalerweise müsste man hier wohl eine Schleife benutzen, allerdings ist dies wohl nicht möglich, weil ich ja meinen Step immer manuell eingeben muss und somit keine Schleife realisieren kann.
Im Moment sieht mein Code für den Plot (die Punkteberechnung dürfte wohl unwichtig sein) folgendermaßen aus:
nicht ganz, wahrscheinlich habe ich mich ein bisschen missverständlich ausgedrückt.
Also die Abfolge ist folgendermaßen:
1. Ich gebe im Step einen Start- und Zielwert ein.
2. Ich führe meinen Code aus.
3. Der Code berechnet mir passend zu dem Step, den ich gerade eingegeben habe, einen Wert aus, z.B. 1. Dies ist mein y-Wert, der x-Wert ist einfach die Differenz meines Steps (also wenn ich von 0,1 auf 0,2 springe, wäre mein resultierender Punkt hier x=0,1 und y=1).
4. Ich gebe im Step einen neuen Start- und Zielwert ein.
5. Ich führe meinen Code aus.
6. Der Code berechnet mir passend zu dem Step, den ich gerade eingegeben habe, einen Wert aus, z.B. 2. Dies ist mein y-Wert, der x-Wert ist einfach die Differenz meines Steps (also wenn ich nun von 0,1 auf 0,5 springe, wäre mein resultierender Punkt hier x=0,4 und y=2).
7. Nun sollen die beiden Punkte, die ich berechnet habe, verbunden werden. Diese Prozedur soll schon mit 5. einhergehen.
8. Wenn ich nun wiederum einen neuen Step eingebe, erhalte ich ja analog zu oben einen dritten Punkt. Dieser soll dann wieder automatisch durch den Code mit meinem davor berechneten, d.h. hier: zweitem, Punkt verbunden werden.
Mithilfe des oben geposteten Codes kann ich schon meine Punkte jeweils plotten. Durch hold on bleiben die Punkte ja auch bei einem neuen Step erhalten. Mir fehlt nun lediglich das Wissen, wie ich diese geplotteten Punkte miteinander verbinden kann.
Ich hoffe, das war einigermaßen verständlich
LG
Kai
Gast
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 19.05.2011, 10:47
Titel:
Dadurch, dass du es mit hold plottest, bekommt jeder Punkt einen eigenen Plot, was es schwierig macht sie zu verbinden.
Hier eine Idee:
Code:
%plots erzeugen
figure;
p1=plot(A,B) %blaue Linie
hold on;
p2=plot(A,B,'rx','markersize',12); %rote Kreuze
hold off
%dann jeweils den Punkt hinzufügen:
set(p1,'ydata',[get(p1,'ydata'),B],'xdata',[get(p1,'xdata'),A]) set(p2,'ydata',[get(p2,'ydata'),B],'xdata',[get(p2,'xdata'),A])
Damit du den Plot nicht mit dem ersten Punkt erstellen musst, kannst du folgendes machen:
Code:
figure;
p1=plot(1,1) ; %blaue Linie
hold on;
p2=plot(1,1,'rx','markersize',12); %rote Kreuze
hold off
set(p1,'xdata',[],'ydata',[]);
set(p2,'xdata',[],'ydata',[]);
%dann in deinem Codeaufruf wie vorher reinplotten:
set(p1,'ydata',[get(p1,'ydata'),B],'xdata',[get(p1,'xdata'),A]) set(p2,'ydata',[get(p2,'ydata'),B],'xdata',[get(p2,'xdata'),A])
sry für meine späte Antwort! Hab ganz vergessen, mich zu bedanken..
LG
Kai
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.