File Exchange

image thumbnail

Animated GIF

version (210 KB) by

How to generate an animated GIF from MATLAB

7 Ratings



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.

Comments and Ratings (14)

E. Cheynet

E. Cheynet (view profile)


Aaron (view profile)

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.


Tim (view profile)

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.

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


Sherif (view profile)

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

Robert Bemis (view profile)

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

Robert Bemis (view profile)

Anders, interesting suggestion. Thanks!

Anders Brun

Anders Brun (view profile)

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

f = getframe;

h = myaa;
f = getframe;



Updated license


Copyright (BSD compliance)

MATLAB Release
MATLAB 7.7 (R2008b)

Inspired: 3-D DataViz Contest Animation, gif

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video