2

I created an animation using the code in the answer of presenting motion of random walkers in matlab

After running the answer code, you can see a movie by sequences of plots. Is there a way to save the sequence of plots as movie?

Cecilia
  • 4,512
  • 3
  • 32
  • 75
oliver rouph
  • 43
  • 1
  • 4

1 Answers1

1

You can create a video of a plot by using the VideoWriter object in the following steps:

1) Create and open the video object (also specifying the name of the video)

 vidObj = VideoWriter('SIN_X_COS_X.avi');

2) in the plotting loop, get the current frame after the the call to plot with the getframe function

currFrame = getframe;

3) write the curent frame in the video file

writeVideo(vidObj,currFrame);

4) close the video object at the end of the plotting loop

close(vidObj);

With respect to the code of the answer you are referring to, you just have to add the above statements, in the location mentined in the step description.

In the following you can find a possible implementation of the proposed approach.

% Generate some data
t=0:.01:2*pi;
sin_x=sin(t);
cos_x=cos(t);
% Open a figure and crate the axes
figure
axes;
%
% STEP 1:
%
% Create and open the video object
vidObj = VideoWriter('SIN_X_COS_X.avi');
open(vidObj);
%
% Loop over the data to create the video
for i=1:length(t)
   % Plot the data
   h(1)=plot(t(i),sin_x(i),'o','markerfacecolor','r','markersize',5);
   hold on
   plot(t(1:i),sin_x(1:i),'r')
   plot(t(1:i),cos_x(1:i),'b')
   h(2)=plot(t(i),cos_x(i),'o','markerfacecolor','b','markersize',5);
   set(gca,'xlim',[0 2*pi],'ylim',[-1.3 1.3])
   %
   % STEP 2
   %
   % Get the current frame
   currFrame = getframe;
   %
   % STEP 3
   %
   % Write the current frame
   writeVideo(vidObj,currFrame);
   %
   delete(h)
end
%
% STEP 4
%
% Close (and save) the video object
close(vidObj);

Hope this helps,

Qapla'

il_raffa
  • 5,090
  • 129
  • 31
  • 36