Once you’ve made a pretty plot in Matlab, making an animation might help you understand temporal phenomena. Making an animation is super easy in matlab, weither you’re working with figures or images. There are two methods to do this, but the most robust is using the VideoWriter class. It’s compatible with all versions of quicktime on both Mac and PC. Here’s how you do it:
1) Initialize your animation
vidObj = VideoWriter('Movie.avi');
vidObj.FrameRate=23;
open(vidObj);
Note: I don’t go below 23 Hz, or videos start to look choppy.
2) Do something in a loop, and add frames to your animation - there are 2 methods to do this. If you’re using images, use im2frame, otherwise if you want to get the current figure, use getframe.
for i=1:100 %do something %add the image to your movie: f = im2frame(Img); writeVideo(aviobj,f); %Or Plot something, then Add to Movie: plot(x,y); f = getframe; writeVideo(vidObj,f);
Note: I prefer the im2frame option if at all possible for a lot of my work, although the getframe method is the only method that works for plots.
For the getframe method, it’s important to note that while the loop is running, you can’t open up other windows on top of the figure window that is making the movie, or they’ll show up in your movie. (E.g., don’t start browsing the web while your figure is running, or all your web surfing will show up in your animation)
3) Close the animation
close(vidObj);
4) Enjoy! – the video will be saved in the working matlab directory




Pingback: Tool of the Week: Pretty(er) Matlab Plots | Mike Soltys
On a Mac (or PC) is there a way to write the movie as something other than a .avi file? Using either the method above or something similar to movie2avi()?
You could use ‘.mj2′ instead of ‘.avi’ in the code, keeping everything else the exact same. This will create a Motion JPEG 2000 movie instead of an Audio Video Interleave, however I’ve always been happy with the avi format. For more info, and to set options specific to each file type, see the VideoWriter class documentation.
Thank you! I always wanted to do this but never knew about VideoWriter before.
Nice
Cool! Had you taught me this tool tip 4 years ago, I could have avoided the whole import-200-png-files-to-windows-moviemaker debacle. That makes it sound bad. It wasn’t actually that hard. I also didn’t know you 4 years ago.