Loop animation with quiver plot
Ältere Kommentare anzeigen
Hey guys. I am fairly new with matlab. Currently i am trying to animate the change of a velocity field in a fluid in time. The velocity field is dependent on depth (z) and distance (x). I would like to present the velocity field in a x/z coordinate system and by an animation show how it changes with time. I can plot the vector field by constant x with quiver(t,z,u,w). Is it possible to use a for-loop for the animation? I tried a lot of different solutions:
x=0
z=linspace(0, -h, 10);
t=linspace(0, 16*pi, 10);
for i=1:length(t)
for j=1:length(z)
u(j,i)=(pi*H)/T*(cosh(k)*(z(j)+h))/(sinh(k*h))*cos(omega*t(i)-k*x); %Particle velocity x direction
w(j,i)=-(pi*H)/T*(sinh(k)*(z(j)+h))/(sinh(k*h))*sin(omega*t(i)-k*x) %Particle velocity z direction
end
end
figure (4)
for t=linspace(0, 16*pi, 10);
for z=linspace(0, -h, 10);
quiver(x,z,u,w)
title('Velocity')
xlabel('Distance [m]') % x-axis label
ylabel('Depth [m]') % y-axis label
ylim([-h 10])
pause(1/60)
end
end
5 Kommentare
CS Researcher
am 1 Mai 2016
Please share the relevant information? What is h, H, k, etc.
CS Researcher
am 1 Mai 2016
You can also look at 'drawnow' function
Emil Brandt
am 1 Mai 2016
KSSV
am 2 Mai 2016
many parameters are not defined.....give the values...it is easy to put it in a loop..
Emil Brandt
am 3 Mai 2016
Antworten (1)
Alessandro Masullo
am 3 Mai 2016
0 Stimmen
Every time that you want to update the figure, you need to call the drawnow function. You won't probably be able to get a framerate of 60fps, but you may speed up the code by getting rid of the xlabel title functions.
If you want to generate a video, you may have a look at getframe.
Kategorien
Mehr zu Animation finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
