Verfasst am: 04.04.2011, 15:27
Titel: Schiebeschalten zum Live-Ändern einer Größe
Moin auf's Forum,
nachdem ich ich nun bisher bei vielen Problemstellungen hier durch liebes google schweigender Weise Hilfe gefunden habe, kann ich mein jetziges Problem nicht formulieren, weil ich die korrekten Schlagwörter nicht weiß.
Das Problem ist wie folgt:
Ich habe ein Programm gebastelt, was eine Verkehrssimulation darstellt. Man kann auswählen, wieviel Autos die Kolonne besitzt und schon geht's los. Jedes dieser Autos hat eine zuvor per Zufallgenerator festeglegte Maximalgeschwindigkeit, die sich an einem StVO-Wert orientiert, der per Benutzerabfrage fesgelegt wird.
Nun ist das Programm ziemilch undynamisch, wenn das vorderste Auto immer mit einer konstanten Geschwindigkeit fährt. Aus diesem Grund würde ich gern einen kleinen Schieberegler, mit dem ich wählen kann wie schnell das erste Auto fahren soll.
Ich hab halt eine laufende while 1-(Endlos-)Schleife. Wenn ich nun am Schieberegler einen Wert einstelle (vmax(1)), soll sich eben diese Variable, die zu Beginn der Schleife verwendet wird, mitändern.
Da ich bislang nur ein Semester Numerik an der Uni hatte und MatLab prinzipiell nur da gelernt habe: Nehmt bitte Rücksicht auf jemanden, dem nicht alle Fachtermini vertraut sind
Das Problem für mich besteht nun darin, dass ich nicht richtig verstehe, wie ich den Wert des Sliders in die Schleife bringe, sprich: ich begreife nicht genau, wie der Slider funktioniert.
Momentan sieht es in etwa so aus:
Code:
%... Defintion der jeweiligen Variablen und so Zeugs
Insbesondere der letzte Teil, also die Funktion speedy ist glaub ich totaler Müll.
Ich hab halt gestern einfach ein bisserl rumgespielt und versucht, irgendwie den Wert als Maximalgeschwindigkeit des ersten Autos (vmax(N)) zu definieren, aber bislang bin ich kläglich gerscheitert ...
Ich hoffe, das hilft, das (mein) Problem ein bisserl deutlicher zu machen.
alles zu (set,- get-, rm)appdata findest du auch gut in der Hilfe...
Code:
while1 drawnow% kurze pause, damit cb speedy ausgeführt werden kann ifisappdata(0,'vmax')% check ob die Variable gespeichert wurde
vmax(N) = getappdata(0,'vmax'); % Variable laden rmappdata(0,'vmax');% Variable Löschen end
if v(N)<vmax(N)*0.5 %Anpassungen fuer das erste Auto
A_s(N,N) = 0;
A_v(N,N) = 0;
b(N) = amax(N)*0.5;
elseif v(N)>vmax(N)*0.5 %Einhalten der Hoechstgeschwindigkeit
A_s(N,N) = 0;
A_v(N,N) = 0;
b(N) = -amax(N);
else
A_s(N,N) = 0;
A_v(N,N) = 0;
b(N) = 0;
end % .... end
function speedy(hObj,event)
vmax = get(hObj,'Value');
setappdata(0,'vmax',vmax)% speichern der Variable im handle 0 (müsste der Matlab Desktop sein) end
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.