File Exchange

image thumbnail

Animated GIF

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

54 Downloads

Updated 01 Sep 2016

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

Aaron

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

Tim (view profile)

I cannot get the code to run using Matlab version 7.12.0.635 (R2011a) but it will run using Matlab version 7.10.0.499 (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

Sherif (view profile)

Very good, thanks.

Joachim

WtFudgE

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.

Geoffrey

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;

with
h = myaa;
f = getframe;
close(h);

Thanks,
Anders

Updates

1.1.0.1

Updated license

1.1.0.0

Copyright (BSD compliance)

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

Inspired: gif, 3-D DataViz Contest Animation

Discover Live Editor

Create scripts with code, output, and formatted text in a single executable document.


Learn About Live Editor

Animated_GIF/html/