Creating movie by sequence of plots in matlab

六眼飞鱼酱① 提交于 2020-01-03 05:47:08

问题


I'm asking this question in the following of the question

question and answer

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?

Any answer is highly appreciated.


回答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'



来源:https://stackoverflow.com/questions/42452200/creating-movie-by-sequence-of-plots-in-matlab

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!