How to make a video from comet(x, y) command?
5 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
N/A
am 6 Nov. 2023
Beantwortet: Walter Roberson
am 2 Jan. 2024
I am trying to record a movie using the comet(x, y) command. To record a movie I use the following commands:
drawnow
movieVector(k) = getframe(gcf);
these are inside a lopp and:
v = VideoWriter('L3 Orbits', 'MPEG-4');
v.FrameRate = 100;
open(v);
writeVideo(v, movieVector)
close(v);
which are outside of the loop.
The issue is I need to capture more frames than just one frame per trajectory. I don't know how to do this.
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 2 Jan. 2024
You cannot do this while using comet() . comet() does not return until all of the drawing is complete .
These days comet() is implemented in terms of animatedLine() and addpoints() and drawnow() . That is probably the same strategy you should use to create the movie.
0 Kommentare
Weitere Antworten (1)
Balaji
am 7 Nov. 2023
Hi Mark,
To capture more frames per trajectory when recording a movie using the `comet` command in MATLAB, you can modify your code as follows:
v = VideoWriter('L3 Orbits', 'MPEG-4');
v.FrameRate = 100;
open(v);
for k = 1:numTrajectories
comet(x, y);
numFramesPerTrajectory = 100;
movieVector = struct('cdata', cell(1, numFramesPerTrajectory), 'colormap', cell(1, numFramesPerTrajectory));
for frame = 1:numFramesPerTrajectory
drawnow;
movieVector(frame) = getframe(gcf);
end
writeVideo(v, movieVector);
end
close(v);
Thanks,
Balaji
2 Kommentare
Balaji
am 2 Jan. 2024
Please insert the following line of code after the `movie_vector` has finished updating, at line 109 in `Comet_Plot.m`:
writeVideo(v, movieVector);
Siehe auch
Kategorien
Mehr zu Orange finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!