MATLAB: I think i have problem with pause command

animationcontrolMATLABpausesimulation

Hello dudes, i make a small animation on matlab about a body that start from Y=0 with initial velocity. My problem is that on the paper maths shows that the total time of the animation will be 4sec but when i run the programm does seem to be same running time. I think that my error is on the pause command but i can't solve it
tspan =0:0.01:4;
y0 = 0;
[t,y] = ode45(@(t,y) -10*t+20, tspan, y0);
plot(t,y)
grid on
x1=[0, 0, 1, 1];
y1=[0, 0.5, 0.5, 0];
x2=[0, 0, 10, 10];
y2=[0, 0.01, 0.01, 0];
fill(x2,y2,'black');
hold on
axis([0 10 -5 25])
grid on
time=0
z=1
while time<=400
time=time+1;
ypsos=y(z)
p=fill(x1,y1+ypsos,[0 0.41 0.53])
pause(0.009)
drawnow
delete(p);
z=z+1;
end

Best Answer

  • It is not obvious that you are filling the area that you would want to fill, but this at least finished quickly enough.
    tspan =0:0.01:4;
    y0 = 0;
    [t,y] = ode45(@(t,y) -10*t+20, tspan, y0);
    plot(t,y);
    axis([0 10 -5 25])
    grid on
    hold on
    drawnow();
    x1=[0, 0, 1, 1];
    y1=[0, 0.5, 0.5, 0];
    x2=[0, 0, 10, 10];
    y2=[0, 0.01, 0.01, 0];
    fill(x2,y2,'black');
    grid on
    for time = 1 : 400
    ypsos=y(time);
    p=fill(x1,y1+ypsos,[0 0.41 0.53]);
    pause(0.009)
    drawnow
    delete(p);
    end