Dabei sind die Intervalle nicht zwingend gleich. In obigem Beispiel soll also Kurve 1 etwas früher beginnen und deutlich früher aufhören als Kurve 2.
Mein Problem ist nun, dass die Animationen nur nacheinander laufen. Ich nehme mal an das liegt an dem hold on, ich habe aber keinen anderen Befehl gefunden.
das mit ezplot und animate kannte ich noch gar nicht. Neben dder Tatsache, dass das nacheinander animiert wird, stört ja noch die Tatsache, dass die ganze Animation (zumindest bei mir) in so kurzer Zeit durchläuft, dass man nichts sieht. Hier ein Vorschlag von mir, da sieht die Animation auch irgendwie echt interessant aus.
(Für zwei Animationen kann man ja gerade noch das copy&paste und die Benennung der Funktionen verkraften, für mehrere Animationen würde man das dann sicher noch anders lösen):
Code:
x1 = @(t)cos(3*t).*cos(t);
y1 = @(t)cos(3*t).*sin(t);
z1 = @(t)ones(size(t)); % so viele einsen, wie t lang ist
x2 = @(t)cos(3*t).*cos(2*t);
y2 = @(t)cos(3*t).*sin(2*t);
z2 = @(t)ones(size(t)); % so viele einsen, wie t lang ist
% Für Animation Anzahl der Schritte und Schrittweite
nSteps = 250;
t1 = linspace(0, 2*pi, nSteps);
t2 = linspace(0.3, 3*pi, nSteps);
figure % Blaue linien plot3(x1(t1), y1(t1), z1(t1), 'b-') hold on
plot3(x2(t2), y2(t2), z2(t2), 'b-')
% Animation der roten Kreise for n = 2:nSteps
% Position der roten Kreise verändern set(h(1), 'XData',x1(t1(n)), 'YData', y1(t1(n)), 'ZData', z1(t1(n))) set(h(2), 'XData',x2(t2(n)), 'YData', y2(t2(n)), 'ZData', z2(t2(n))) pause(0.05)% kleine Pause, damit man auch etwas sieht title(sprintf('t1 = %.2f, t2 = %.2f',[t1(n), t2(n)])) end
danke für die schnelle Antwort, es hat mich einge Zeit gekostet das ganze (einigermaßen) nachzuvollziehen =D.
Zitat:
(Für zwei Animationen kann man ja gerade noch das copy&paste und die Benennung der Funktionen verkraften, für mehrere Animationen würde man das dann sicher noch anders lösen):
Stimmt! Die von mir gegebenen Kurven waren auch bloß allgemeine Beispiele. Mittlerweile arbeite ich mit einer Funktion Curve, die jedem Zeitpunkt des Vektors t eine 3D Position zuweist, zB
Der Code den ich verwende sieht anders aus, aber ist schwer wiederzugeben, weil sich meineCurve.m auch noch auf andere Funktionen bezieht.
Nun möchte ich zwei 'ähnliche' solcher Kurven Plotten:
Code:
function[]Plot = (t1, t2)
A = Curve1(t1);
B = Curve2(t2;
figure plot3(A(:,1), A(:,2), A(:,3));
hold on
plot3(B(:,1), B(:,2), B(:,3));
Mir ist es wichtig die Unterschiede der beiden Kuven sichtbar zu machen. allerdings funktioniert es bei mir nicht 'makerfacecolor' auf 'black' zu setzten..
Gibt es darüber hinaus eine Möglichkeit, das ganze höher aufzulösen?
Und auch ein 'Replay'-Button im figure wäre nicht schlecht! Oder steht diese Funktion nur mit ezplot zur Verfügung?
Gruß, Gomar
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.