问题
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