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

Verschiebung von Punkten

 

DonMcDonut
Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 17.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2012, 11:06     Titel: Verschiebung von Punkten
  Antworten mit Zitat      
Hallo zusammen,

Ich versuche meine Situation vereinfacht darzustellen.

Folgende Situation:

Mehrere Punkte sind miteinander gekoppelt und werden (unterschiedlich) verschoben. Diese Verschiebungen kann ich mithilfe von Matrizen erfassen.
Das ist alles nur eindimensional.

Nun möchte ich diese Verschiebungen graphisch darstellen.
Dazu einmal den Ausgangszustand und dann den Zustand, bei dem die Punkte verschoben sind.

Kann mir einer von euch einen Hinweis geben, wie ich das mache?

Leider kann ich hier keinen Code posten, da der noch nicht ganz ausgereift ist Very Happy.

Gruß
DonMcDonut
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 09.03.2012, 11:11     Titel:
  Antworten mit Zitat      
warum plottest du nicht einfach beide bilder? erklär dein gewünschtes ergebniss bitte genauer. vieleicht auch ein vereinfachtes beispiel.
Private Nachricht senden Benutzer-Profile anzeigen
 
DonMcDonut
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 17.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2012, 11:19     Titel:
  Antworten mit Zitat      
Hallo Winkow,

also dass man den Ausgangszustand plotten kann und dann den aktuellen Zustand als zweiten Plot hinzunimmt, leuchtet mir ein.

Das Problem ist, dass bei der Verschiebung der Punkte viele Effekte sich überlagern und demnach ein dynamisches System entsteht.

Eigentlich möchte ich final mehrere Punkte (in einer Linie) hintereinander sehen, die verschoben werden. Die Punkte schwingen um ihre Ausgangslage, also muss ich auch mit einem Zeitinkrement arbeiten.

Hilft das weiter oder verwirrt das nur noch?

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 09.03.2012, 11:23     Titel:
  Antworten mit Zitat      
du willst also eine animation erstellen?
Code:
f=@(x,t) sin(x)*sin(pi/2*t);
x=0:pi/10:2*pi;
ylim([-1.1,1.1])
for l=0:.1:5
    plot(x,f(x,l))
    ylim([-1.1,1.1])
    drawnow
    pause(0.1)
end
Private Nachricht senden Benutzer-Profile anzeigen
 
DonMcDonut
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 17.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2012, 11:34     Titel:
  Antworten mit Zitat      
Hallo,

Vielen Dank übrigens für die schnellen Antworten!!

Da bin ich mir nicht sicher. Vlt. weiß ich nicht genau, wo der Unterschied zwischen einem Plot und einer Animation ist.

Für den Ausgangszustand reicht mir doch der Plot.

Dann möchte ich das Verhalten der Punkte in Abhängigkeit von der Zeit darstellen. Ich hätte jetzt gedacht, dass ich pro Zeitschritt mir einen Plot ausgeben lasse, der den aktuellen Stand zeigt und für den nächsten Zeitschritt wieder einen Plot usw.
Geht das so nicht?

Oder brauche ich dafür eine Animation? Was könnte ich denn damit erreichen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 09.03.2012, 11:37     Titel:
  Antworten mit Zitat      
du kannst auch alles einzeln plotten. ich versteh dein problem dann nicht. du solltest vieleicht erstmal weiterarbeiten bis du ein beispiel hast und uns sagen kannst wo dein ergebniss vom gewünschtem abweicht.
Private Nachricht senden Benutzer-Profile anzeigen
 
DonMcDonut
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 17.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2012, 11:39     Titel:
  Antworten mit Zitat      
Hey,

dein Beispiel ist ja eine Animation. Sowas in der Richtung möchte ich später auch haben.
Aber du hast Recht. Ich mach mal weiter, damit ich euch den Code geben kann.

Ich meld mich später - keine Sorge Wink.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 09.03.2012, 11:42     Titel:
  Antworten mit Zitat      
nochmal ein besispiel ohne animation (pause drawnow)
und mit farbwächsel
Code:
f=@(x,t) sin(x)*sin(pi/2*t);
x=0:pi/10:2*pi;
ylim([-1.1,1.1])
for l=0:.1:1
   
    plot(x,f(x,l),'Color',[l,1-l,0])
    hold on
    ylim([-1.1,1.1])
end
Private Nachricht senden Benutzer-Profile anzeigen
 
DonMcDonut
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 17.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2012, 11:55     Titel:
  Antworten mit Zitat      
Hey Winkow,

nene, der erste Code ist schon eher das, was ich mir als Ergebnis vorstelle. Aber der zweite Code ist die Umsetzung meines Gedankens, oder?

Also ich versuche mal, meinen Fall mithilfe deines ersten Vorschlages zu bearbeiten und poste den Code später, wenn du/ ihr alle mir weiterhelfen könnt Smile
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 09.03.2012, 11:57     Titel:
  Antworten mit Zitat      
sonst kannst du auch nochmal bei
Code:
gucken, ist im prinziep das gleiche vorgehen
Private Nachricht senden Benutzer-Profile anzeigen
 
DonMcDonut
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 17.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2012, 14:16     Titel:
  Antworten mit Zitat      
Mahlzeit zusammen,

also ich habe das mit der normalen Plot-Funktion gemacht. Das ist jetzt nur der Anfang. Um die dynamischen Vorgänge darstellen zu können, muss ich erst noch die restliche Programmierung vervollständigen.

Code:

n=4;
p=14;
dp=0.5;

z1=0;
z2=1;

for i=1:n
     if i==1
         M1(i,1)=0;                 %Ausgangszustand
     else
         M1(i,1)=(i-1)*p;
     end
       
     M2(i,1)=i*dp+(i-1)*p;    %Endzustand
end
   
plot(M1,z1,'-o',M2,z2,'-x');
ylim([-4,5]);                        %Positionierung an y-Achse      
drawnow
pause(1)
 


Könnte ich denn mit dieser Basis mein anfängliches Anliegen behandeln:
Die Verschiebung der Punkte (x) schwingen um die Ausgansposition, wie die Animation der Schwingung deines ersten Codes.
Wie gesagt, das deckt dieser Code natürlich noch nicht ab Very Happy.
Aber wäre das damit möglich?

Außerdem noch eine Frage: um die Punkte mit Linien zu verbinden kann ich doch die Bindestriche im Code hinzufügen (wie oben zu sehen).
Das funktioniert nicht. Auch mit hold on/hold off erhalte ich keine Linien.

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 09.03.2012, 14:30     Titel:
  Antworten mit Zitat      
Code:
z1=zeros(size(M1));
z2=ones(size(M2));

wenn funktionswert und argumentenvektor die selbe dimension haben malt er auch verbindungs striche.

außerdem kannst du dir auch deine forschleife sparen.
Code:
i=1:4;
M1=(i-1)*p;
M2=i*dp+(i-1)*p;

sollte glaube ich das selbe ergebniss erzielen
Private Nachricht senden Benutzer-Profile anzeigen
 
DonMcDonut
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 17.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 09.03.2012, 15:13     Titel:
  Antworten mit Zitat      
Sauber. Sieht gut aus!

Ich danke dir!

Dann sehen wir mal mit dem Rest weiter...

Gruß
Private Nachricht senden Benutzer-Profile anzeigen
 
Andy386
Forum-Guru

Forum-Guru


Beiträge: 485
Anmeldedatum: 24.06.09
Wohnort: ---
Version: 7.1/8
     Beitrag Verfasst am: 09.03.2012, 15:33     Titel:
  Antworten mit Zitat      
zwei Sachen:
du machst ne For-Schleife von 1 und fragst dann auf 1 ab?!
-> erstmal Code, dann For ab 2.

Dein Endzustand ergibt sich nicht aus dem Ausgangszustand...
_________________

Ich hasse es wenn die Leute Fragen stellen, man dann versucht sich Mühe zu geben, und diejenigen ihren Thread nie wieder besuchen...
Private Nachricht senden Benutzer-Profile anzeigen
 
DonMcDonut
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 27
Anmeldedatum: 17.02.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 26.04.2012, 13:27     Titel:
  Antworten mit Zitat      
Hallo Andy386,

das ist ein guter Hinweis. Werde ich noch so berücksichtigen Smile - bin aber auch, wie es in deiner Fußnote steht, durch Zufall hierher zurück gekehrt...

Um deine Mühe wertzuschätzen, hätte ich direkt noch eine Frage an dich/euch allgemein:

Code:

t0=0;
dt=0.1;
tend=1;

t_Anz=tend/dt;     %Anzahl der Zeitschritte
T=zeros(t_Anz,1); %Vektor mit dementsprechend Zeilen

for t=t0:dt:tend
T(??,1)=t;            %an der aktuellen Stelle der Schleife soll aktuelles t eingetragen werden
end
 


Die Fragezeichen stehen für folgendes:
Ich möchte einen Vektor erstellen, der soviele Einträge hat, wie die Anzahl der Schritte t (t_Anz). Zusätzlich soll er mir für jeden Schleifendurchlauf an der jeweiligen Stelle den aktuellen Wert für t zuweisen.

Ich würde das prinzipiell und umständlich über eine zweite for-Schleife realisieren, aber das funktioniert nicht und muss einfacher gehen.

Könnt ich da mir einen Hinweis geben?

Gruß
DonMcDonut

Mist: diese Rückfrage passt nicht zu diesem Thema und sollte eigentlich hierhin:
http://www.gomatlab.de/einfuegen-vo.....highlight,donmcdonut.html
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.