File Exchange

image thumbnail

Animated GIF

version (210 KB) by Robert Bemis
How to generate an animated GIF from MATLAB


Updated 01 Sep 2016

View Version History

View License

This example animates the vibration of a membrane, captures a series of screen shots, and saves the animation as a GIF image file. The animated GIF is also embedded in an HTML page via the published M-File.

Cite As

Robert Bemis (2021). Animated GIF (, MATLAB Central File Exchange. Retrieved .

Comments and Ratings (15)

Nicholas Zahnweh

Causes the following Error:
Unable to perform assignment because the size of the left side is 344-by-435 and the size of the right side is 344-by-434.

Error in AnimatedGif (line 24)
im(:,:,1,k) = rgb2ind(f.cdata,map,'nodither');

E. Cheynet


Tim: I had the same ghost image problem; I fixed it by adding 'set(gcf, 'Renderer', 'zbuffer') around line 18 (after 'set(gca, 'nextplot' ...). I also changed the background color to white because the default was grey by using 'set(gcf, 'Color', [1 1 1])'. Hope that helps.


I cannot get the code to run using Matlab version (R2011a) but it will run using Matlab version (R2010a). I have the Image Processing Toolbox for the 2011 version but not the 2010 version. Does anyone have the “fix” for newer version of Matlab? All I get is a single image with a “ghost” of what is behind the figure on the screen.

Bogdan Dzyubak

If I use the attached GIF in powerpoint, it does play. If I rerun the code it yields a gif with a single frame. Are any additional inputs necessary?

JR King


Very good, thanks.



I am trying to do it with imagesc or imshow, however my gif file doesn't have all the colours in my image, I tried it with a 3D version of the shepp logan phantom, which odly has a minimum value of -5.551115123125783e-017 and a max of 1 and it's a double.
Is there perhaps some setting that could fix this? It plots fine... It just doesn't write all the colours entirely, only like one gray & black

Ged Ridgway

Am I right in thinking that 'DelayTime',0 means that the speed of the animation is only limited by the viewer's hardware? (In other words, in a years to come, those peaks might be dancing too fast to see!)

Oddly, the documentation for imwrite doesn't say what the default is for this; looking at imagesci/private/writegif.m it appears that it's 0.5 seconds, which seems very long for most animations (as opposed to step-throughs of multiple plots). I would have thought that something like 1/24 (a common choice of frame-rate I believe) would be a reasonable choice. Though writegif rounds to the nearest 100th of a second, so this would actually be 0.04s. Anyway, just a thought.


It would be nice if I could just feed an argument into a function, but the code is effective and easy to edit.

Robert Bemis

Luca, see the help for GETFRAME. The optional arguments are what you need. :)

Luca Cerone

That's almost what I was looking for..
I just wonder how can I display also xlabel, ylabel
and title, and the values on the axis.
Any Idea???
Thank you very much by the way :)

Robert Bemis

Anders, interesting suggestion. Thanks!

Anders Brun

Nice example! You can add anti-aliasing too if you download the Myaa tool and replace every

f = getframe;

h = myaa;
f = getframe;


MATLAB Release Compatibility
Created with R2008b
Compatible with any release
Platform Compatibility
Windows macOS Linux

Inspired: gif, 3-D DataViz Contest Animation

Community Treasure Hunt

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

Start Hunting!