MATLAB Answers

S Simeonov

How to create a movie and play it instead of using a for loop of plots

Asked by S Simeonov
on 24 Nov 2011

I have a cell (Nx1) which contains data (x,y,z coordinates). I then proceed to create N plots in a for loop which results in a movie like output.

However, I would like to be able to collect all the plots (silently) in a movie and then play it, save it etc.

I've found this:

but I don't know how this helps when you have various plot commands each of which draws a new plot.



No products are associated with this question.

2 Answers

Answer by Naz
on 24 Nov 2011

Here is what I use. Don't know if it will work as is, but first it should play it (as a sequence of frames of 3D matrix DATA) and then play it again after saving to 'outFileName'... Don't remember exactly.

fig1 = figure(1);
winsize = get(fig1, 'Position');
winsize(1:2) = [0 0];
winsize(3:4) = winsize(3:4)*1.5;
numframes =total;
A = moviein(numframes, fig1, winsize);
set(fig1, 'nextplot', 'replacechildren');
for i = 1:numframes
    imagesc(DATA(:,:,i), [0 0.3]); axis image; axis off; colormap gray
    A(:,i) = getframe(fig1, winsize);
frame_rate = 10;
movie(fig1,A,1,frame_rate, winsize)
movie2avi(A,num2str(outFileName), 'fps', frame_rate)

*In 'imagesc' line the term [0 0.3] is for contrast (you might not needed).


Answer by Nino
on 11 Jun 2013

Hello NAz, you answer is clear. but, suppose to have a trajectory defined in an array 3D+time (x,y,z,t). how is possible tu play the trajectory and read the time value on the plot by pointing the mouse on the graph?


Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply today