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