Consider the following function that draws an animated plot of cicloid.
function animate1()
clear, clc
R = 1;
na = -pi/2;
t = 0:0.05:6;
v = 4;
for i = 1:length(t)
x0 = v*t(i);
y0 = R;
na = -v*t(i)/R;
fi = linspace(na,na+2*pi,100);
x = x0 + R*cos(fi);
y = y0 + R*sin(fi);
xc(i) = x0 + R*cos(na);
yc(i) = y0 + R*sin(na);
plot(x,y,'b',...
xc(i),yc(i),'*m',...
xc,yc,'r')
axis([-1 25 0 1.5])
axis equal
pause(0.01)
end
Is it possible to modify the code in such a way that it output animated plot e.g. to a gif?
Thank you in advance!
Yes, imwrite
does support animated GIFs. Like for AVI videos, you grab frames via getframe
sequentially. Then pass them to imwrite
though for GIFs you have to convert them from RGB to a 256 colormap before. Like this:
for i = 1:nFrames
% draw stuff
frame = getframe(gcf);
img = frame2im(frame);
[img,cmap] = rgb2ind(img,256);
if i == 1
imwrite(img,cmap,'animation.gif','gif','LoopCount',Inf,'DelayTime',1);
else
imwrite(img,cmap,'animation.gif','gif','WriteMode','append','DelayTime',1);
end
end
Have a look at openExample('matlab/WriteAnimatedGIFExample')
and at doc imwrite
for more information.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With