Verfasst am: 10.04.2012, 18:13
Titel: Bewegnungen von Punkten
Hey hey,
ich hab n Problem mit dem löschen von mehreren plot.
ich will das nachdem die 5 Punkte gezeichnet werden, dass sie wieder verschwinden und die nächsten 5 gezeichnet werden.
Code:
% Das ist mein Programm.
%A mAtrix für x koordinaten
%B matrix für y Koordinaten
u=0;
v=0;
% j anzahl der personen % i anzahl der schritte
A = [];
B = [];
C = [];
for j = 1:1:5
u = randn();
v = randn();
for i= 1:1:20
u = u+randn();
v = v+randn();
B(i,j) = v;
A(i,j) = u;
end end
for i = 1:1:20 for j = 1:1:5
a=A(i,j);
b=B(i,j);
hold on;
h = plot(a, b , 'o', 'MarkerSize', 10, 'MarkerEdgeColor', 'g', 'MarkerFaceColor', 'g');
end
Also einfach löschen geht nicht?
Ich möchte später ein riesen feld haben mit vielen punkten. jedes einfach übermalen ist da glaub ich keine gute lösung...
am ende soll das ein video davon werden wie leute aus einem raum laufen (die kreise sollen einen menschen darstellen)
da ist wieder ein Problem aufgetreten, das für mich aber absolut unverständlich ist.
Wär super wenn ihr euch die Zeit nehmen könntet und es mal in Matlab rein kopiert.
Problem:
- die Kreise (Leute) Laufen in richtung ausgang. soweit sogut. Aber warum bleiben die Kreise vor dem Ausgang und verschwinden nicht?
in Linie (60) werden doch werschiedenviele Schritte möglich.
Deshalb müssten doch am Ende (bei den letzten durchgängen der schleife (Zeile: 76) immer weniger Kreise auf der Ausgabe erscheinen.
for i = 1:1:Leute%Leute
a = 5;
k = 0; %Zählt wieviele Schritte gemacht wurden
b = 140+randn()*Toleranz;
% j anzahl der personen for j = 1:1:Inf
Zzx = randn()+1;
x = a;
y = b;
if(x < exitx - Toleranz)
x = a + Zzx;
else end
%________zufällige_Bewegung_in_positive_x-Richtung___
if((y < wando - Toleranz) && (y > wandu + Toleranz)) if(y <= exity)
Zzy = randn() + 1;
else
Zzy = randn() - 1;
end else break; %Leute werden an der Mauer zerquetscht
end
if((x <= exitx - 2*Toleranz)||(y >= exit1) || (y <= exit2))
a = x;
b = y + Zzy;
else break;%Haben_den_Ausgang_ereicht
end
A(i,j) = a;
B(i,j) = b;
k = k + 1;
end
C(i) = k;
end
%Berechnet_wieviel_die_meisten_Schritte_waren_die eine_Person_gebraucht_hat
for l = 1:1:Leute
s = C(l);
if(s>k)
k=s;
end end
for j = 1:1:k
for i = 1:1:Leute
a = A(i,j);
b = B(i,j);
hold on;
h = plot(a, b , 'o', 'MarkerSize', Toleranz, 'MarkerEdgeColor', 'b', 'MarkerFaceColor', 'g');
solche Probleme kannst du schön mit dem Debugger analysieren.
Meine Vermutung: Die Toleranz ist zu klein, und die Leute "treffen" den Ausgang nicht und werden stattdessen "zerquetscht".
Was Zeile 94 angeht: du hast das Koordinatensystem in Zeile 27 so eingeschränkt, dass die Tür nicht sichtbar ist.
Ich würde zudem die Pause dann machen, wenn der Frame zu Ende gezeichnet ist (also inkl. der Mauern etc.)
Grüße,
Harald
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.