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

Bewegnungen von Punkten

 

82kolu
Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 08.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2012, 18:13     Titel: Bewegnungen von Punkten
  Antworten mit Zitat      
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


axis([-20 20 -20 50])
M(i)=getframe
 end

 


Für alternativen oder lösungen wär ich sehr dankbar Smile
Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Queandras
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 16.03.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2012, 18:33     Titel:
  Antworten mit Zitat      
Mit
Code:
würde ich es einmal ausprobieren.
Code:
    hold on;
 h = plot(a, b , 'o', 'MarkerSize', 10, 'MarkerEdgeColor', 'g', 'MarkerFaceColor', 'g');
   end


axis([-20 20 -20 50])
M(i)=getframe
 end
hold off


dort würd ich es einmal ausprobieren Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
82kolu
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 08.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2012, 18:44     Titel:
  Antworten mit Zitat      
Hey, ne des hilft nicht normal macht man es ja mit delete(h) aber wenn man das macht dann löscht es nur den zuletzt gezeichneten punkt...
Private Nachricht senden Benutzer-Profile anzeigen
 
Coja
Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 20.06.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2012, 21:30     Titel:
  Antworten mit Zitat      
Hallo,
alternativ könnte man die letzten 5 Punkte mit "weiß übermalen"..

Gruß
Coja
Private Nachricht senden Benutzer-Profile anzeigen
 
82kolu
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 08.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2012, 21:39     Titel:
  Antworten mit Zitat      
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)

Aber danke für den versuch
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.04.2012, 22:28     Titel:
  Antworten mit Zitat      
Hallo,

probiers mal mit
Code:


evtl. in Kombination mit drawnow, z.B. so:

Code:


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
82kolu
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 08.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2012, 22:51     Titel:
  Antworten mit Zitat      
was macht der befehl und wo soll ich den einfügen? direkt nach dem plot oder am ende?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.04.2012, 23:11     Titel:
  Antworten mit Zitat      
Hallo,

was macht der Befehl? Das solltest du selbst nachsehen können:
Code:


Einfügen würde ich ihn an der Stelle, an der alle vorherigen Punkte gelöscht werden sollen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
82kolu
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 08.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.04.2012, 23:30     Titel:
  Antworten mit Zitat      
Hey voll gut Smile
es klappt!!
vielen Dank
Private Nachricht senden Benutzer-Profile anzeigen
 
82kolu
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 25
Anmeldedatum: 08.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.04.2012, 02:16     Titel:
  Antworten mit Zitat      
Hey hey,

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.

Code:
%Ecke_des_Gebäudes_x_______________________________________
lox = 1;
lux = 1;
rux = 100;
rox = 100;
%Ecke_des_Gebäudes_y_______________________________________
loy = 200;
luy = 100;
ruy = 100;
roy = 200;

Leute = 7;
exit1 = 167;%Oberer_Balken_der_Tür_y
exit2 = 150;%Unterer_Balen_der_Tür_y
exity=(exit1+exit2)/2;%Punkt_andem_sich_der_Kreis_orientiert(Ausgang)
exit3 = 100;%Vorderer_Balken_der_Tür_x
exit4 = 100;%Hinterer_Balen_der_Tür_x
exitx =(exit3+exit4)/2;%Punkt_andem_sich_der_Kreis_orientiert(Ausgang)
wando = 200; %ObereWand
wandu = 100; %UntereWand
Zzx = 0;
Zzy = 0;
Zzx2 = 0;
Zzy2 = 0;
Toleranz = 5;
PersonenAmEnde = false;
axis([0 rox+rux-100 0 loy+roy-100])
axis off

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');
 
   end
    drawnow
    pause(0.2)
    cla
   
 hold on
line([lux,lox],[luy,loy])%linke_Mauer
line([lox,rox],[loy,roy])%obere_Mauer
line([exit4,rux],[exit2,ruy])%rechts_unter_Exit
line([exit3,rox],[exit1,roy])%rechts_über_Exit
line([rux,lux],[ruy,luy])%untere_Mauer
line([exit4, exit4 + Toleranz],[exit2, exit2 + 10], 'Color', 'r')%Tür
   
M(i) = getframe
 end



Des Weiteren: wird die Zeile (94) nicht ausgeführt. Es wird keine rote Tür gezeichnet. Aber warum?


vielen Dank!
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.499
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.04.2012, 14:51     Titel:
  Antworten mit Zitat      
Hallo,

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
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.