How to generate video file from animated plot in Matlab?
85 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
Alireza Babaei
il 12 Gen 2021
Commentato: Alireza Babaei
il 16 Ott 2022
Dear scholars,
I have a problem with generating .avi video file from animated file. I attach the code below, I appreciate if sb can give me a hand in figuring out the problem.
It generates the vidoe but the video is quite short and practically does NOT show anything!
Regards
x = linspace(0, 1*pi, 5000)
y = exp(-0.05.*100.*x).*sin(100.*x+0);
curve = animatedline('Color', 'k', 'LineStyle', '-', 'LineWidth', 2)
set(gca, 'XLim', [0 1*pi]);
box on
for i = 1 : length(x)
addpoints(curve, x(i), y(i));
drawnow
end
legend('Classical Rod Model', 'FontSize', 12)
xlabel('t (s)', 'FontSize', 12)
ylabel('Amplitude', 'FontSize', 12)
obj = VideoWriter('curve.avi');
obj.Quality = 100;
obj.FrameRate = 3;
open(obj);
f = getframe(gcf)
writeVideo(obj, f)
obj.close();
0 Commenti
Risposta accettata
KSSV
il 12 Gen 2021
It is because, you are writitng only the last frame into video...you need to keep the video writer code into a loop.
x = linspace(0, 1*pi, 1000) ;
y = exp(-0.05.*100.*x).*sin(100.*x+0);
curve = animatedline('Color', 'k', 'LineStyle', '-', 'LineWidth', 2) ;
set(gca, 'XLim', [0 1*pi]);
box on
f = cell(length(x),1) ;
for i = 1 : length(x)
addpoints(curve, x(i), y(i));
drawnow
f{i} = getframe(gcf) ;
end
legend('Classical Rod Model', 'FontSize', 12)
xlabel('t (s)', 'FontSize', 12)
ylabel('Amplitude', 'FontSize', 12)
obj = VideoWriter('curve.avi');
obj.Quality = 100;
obj.FrameRate = 3;
open(obj);
for i = 1:length(x)
writeVideo(obj, f{i}) ;
end
obj.close();
4 Commenti
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Animation in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!