Single Figure Animation of moving points (without tails)
10 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Luca Carlino
am 19 Jun. 2020
Bearbeitet: Luca Carlino
am 24 Jun. 2020
Hello, I am trying to plot an animated figure, where two points move. I need this to be done in a single MATLAB figure. Usually, this is done in a for loop, but this creates multiple figures and, for various reasons, I would prefer to avoid this. I would like to first declare a figure, appropriately prepare it (axes, grid, box, and so on) and then simply draw on it. The hold function doesn't create multiple figures, but it will leave "tails" (previous positions of the moving points). This is a simple working example (single point) of what I am trying to do (but it will leave tails).
P.S. I am aware of the comet function, but it leaves a tail.
%Random Data
x = (1:0.01:2*pi)';
y = sin(x);
%Animated Figure
figure;
hold on;
plot(x(1),y(1),'db');
axis([min(x) max(x) min(y) max(y)]);
xlabel('X', 'Interpreter','Latex');
ylabel('Y', 'Interpreter','Latex');
grid on;
box on;
for k = 2:length(x) %loop
plot(x(k),y(k),'db');
drawnow
end
hold off;
2 Kommentare
Akzeptierte Antwort
Geoff Hayes
am 23 Jun. 2020
Luca - use set to modify the x and y data of the plot. Replace your for loop with the following
hPlot = plot(NaN, NaN, 'db');
for k = 2:length(x) %loop
set(hPlot, 'XData', x(k), 'YData', y(k));
drawnow
end
On each iteration of the loop, we set (change) the x and y data to be the new position.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Graphics Performance finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!