plotting results of an while loop

Hi I have to plot the speed of a Basejumper in dependence of the time. For this I'm using a while loop with the plot command underneath. That's my code:
while s>0%
a=g+k/m*v.^2;
deltav=a*deltat;
v=v+deltav
deltas=v*deltat;
s=s+deltas;
t=t+deltat;
end
plot(t,v)
hold on
sprintf('Der Flug dauerte %5.3f Sekunden',t)
sprintf('Die Geschwindigkeit beim Aufschlag betrug %5.3f m/s',v)
Unfortunately Matlab shows only one point in the diagram not the whole graph. Does anybody knows what I did wrong?
Thanks Fabian

Respuestas (2)

Sean de Wolski
Sean de Wolski el 9 de Feb. de 2012
You overwrite t,v on each iteration of the for-loop. Instead you need to either plot them then or store them to plot later.
count = 0;
while ...
count = count+1;
v(count) = v(count-1)+deltav;
end
or plot as you're going;
hold on
while ...
%stuff
plot(t,v)
end

2 comentarios

BHAGYASHREE WAGHULE
BHAGYASHREE WAGHULE el 4 de Oct. de 2018
Hello Sean, I tried your first suggestion of using count, but it gives an error saying the subscript indices must either be real positive integers or logicals.
ok, i think it will give error, because Matlab uses 1 based indexing,
while ...
count = count+1;
v(count+1) = v(count)+deltav; % use this instead, (count-1) = 0 ; Matlab
end
e.g.
S = 1:10;
S(0)
Array indices must be positive integers or logical values.

Iniciar sesión para comentar.

Fabian Höfler
Fabian Höfler el 9 de Feb. de 2012

0 votos

Yeah! It's running thanks a lot.

Categorías

Más información sobre Graphics Performance en Centro de ayuda y File Exchange.

Productos

Etiquetas

Preguntada:

el 9 de Feb. de 2012

Comentada:

el 23 de En. de 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by