Dort sieht man wie schön flüssig sich die Planeten bewegen. Mit welchem Tool kann ich in Matlab solch eine 2D Darstellung erzeugen, so dass ich dort meine x-y- Koordinaten übergeben kann, um bestimmte Bewegungen zu erzeugen? Denn mit dem normalen plot-Befehl geht es auch, aber es sieht nicht so schön flüssig aus.
Vielleicht kann mir Jemand noch einen Tipp geben mit welchen Befehlen / Tools, ich meine Berechnungen so schön darstellen kann?
poste doch bitte deine bisherigen Versuche. Generell beschleunigt es die Ausführung, wenn man statt einen neuen Plot zu erzeugen nur die Daten (Eigenschaften XData, YData) ersetzt.
Mit dem ersten Ergebnis bin ich zufrieden. Ich habe sogar ein Bild eingefügt, welches jedoch für dieses Minimalbeispiel auskommentiert wurde.
Im weiteren möchte ich den Plot bisschen besser visualisieren und in eine Funktion auslagern. Außerdem werde ich versuchen die DGL mit einem besseren Verfahren zu lösen, da auch bei kleinen Zeitschritten das Objekt an Energie gewinnt, so dass eine Spirale statt eines geschlossenen Kreises entsteht. Das Ziel ist es im späteren Verlauf mehr Kräfte in das Modell einzubeziehen. Als Bespiel wäre hier die Widerstandskraft erwähnt. Diese würde zumindest bei einem Startwert auf Bodenhöhe in Form eines Luftwiderstandes auftreten. Mir ist bewusst, dass dieser z.B. von der Höhe abhängt (Dichte) und vom CW-Wert, welcher wiederum eine Funktion der Geschwindigkeit ist und deshalb auch nur iterativ ermittelbar. Deshalb würde ich diese Werte zunächst als konstant oder linear annehmen. Ich würde das ganze aber gerne auf hübschen, so dass es wie in meinem geposteten Link flüssiger läuft (im Moment ist es ziemlich laggi) und ggf. mit einem Panel die Parameter währenddessen oder zumindest zuvor anpassen kann.
Mit Matlab habe ich noch nicht soviel Erfahrung. Falls Jemand einen Tipp für eine vereinfachte Schreibweise hat, bin ich da auch immer offen für. Ich hab jetzt alles in eine Schleife gepackt und versucht das Ganze innerhalb und einmal außerhalb der Schleife zu plotten (auskommentierter Plot).
und, hast du den Vorschlag mal versucht?
In deinem Beispiel gewinne ich damit einen Faktor 3.
Code:
for s=0:t-1 % Berechnungen ... axis([-5*10e+65*10e+6-5*10e+65*10e+6]) if s == 0
p = plot(x(1,i),y(1,i),'.');
else
p.XData = x(1, 1:i);
p.YData = y(1, 1:i);
end drawnow
i=i+1;
end
if s == 0
p = plot(x(1,i),y(1,i),'.');
axis([-5*10e+65*10e+6-5*10e+65*10e+6]) elseifmod(s,4) == 0
p.XData = x(1, 1:i);
p.YData = y(1, 1:i);
axis([-5*10e+65*10e+6-5*10e+65*10e+6]) drawnow end
i=i+1;
end
Danke Harald, sieht schon sehr nice aus und macht natürlich auch viel mehr Sinn
Sagen wir ich möchte jetzt z.B. ein einzelnes Objekt sich bewegen lassen entlang der Koordinaten, ginge das auch?
Also im Fall von XData müsste es ja zumindest möglich sein einen Punkt zu erzeugen und im nächsten Durchlauf zu löschen und den neuen einen Schritt weiter zu erstellen, dann sähe es so aus als würde dieser alleine durch die Luft kreisen.
Ich werde mir aber jetzt auch parallel noch die Help Seite dazu durchlesen.
verwenden. Dann wird nur der momentane Punkt angezeigt.
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.