Recording a graphics element to a video format

1 vue (au cours des 30 derniers jours)
Owen
Owen le 20 Fév 2025
Réponse apportée : Epsilon le 25 Fév 2025
Hello,
I'm having some trouble finding a method to save this graphics animation to a video file. The initial 'array' is a 1200x8 matrix that I'm simply performing interpolation on between points. A .gif file would be the most useful format, but I haven't been successful saving the graphics element 'p' to this file type. Any help is appreciated.
Thanks.
array=-ppdtrace;
array_zeros=[zeros(size(array,1),1) array];
array_zeros=cat(2, zeros(size(array,1),1), array);
x = (0:8)';
xx=0:0.05:8;
yy=makima(x,array_zeros(1,:),xx);
figure(1)
p = plot(x,array_zeros(1,:)',xx,yy);
axis([0 9 -0.85 0]);
for k=2:1200
pause(0.05)
yy=makima(x,array_zeros(k,:),xx);
set(p, 'XData', xx, 'YData', yy);
end

Réponses (1)

Epsilon
Epsilon le 25 Fév 2025
Hi Owen,
To save the generated images into a gif, both ‘exportgraphics’ and imwrite’ functions can be used. The ‘imwrite’ function can be used to write an image to a file location and append the subsequent images to create a gif with a controlled delay. Whereas the ‘exportgraphics’ function (in release R2022a and later) can directly save the graphics object into a gif file.
Attaching a sample code with 12 frames using both the functions:
array = rand(12, 8) * 2 - 1;
array_zeros = [zeros(size(array, 1), 1), array, zeros(size(array, 1), 1)];
x = (0:9)';
xx = 0:0.05:9;
yy = makima(x, array_zeros(1, :), xx);
figure(1)
p = plot(x, array_zeros(1, :)', xx, yy);
axis([0 9 -1 1]);
filename = 'animation.gif';
%Using imwrite function
for k = 1:12
pause(0.05)
yy = makima(x, array_zeros(k, :), xx);
set(p, 'XData', xx, 'YData', yy);
% Capture the current frame
frame = getframe(gcf);
img = frame2im(frame);
[imind, cm] = rgb2ind(img, 256);
% Write to the GIF file
if k == 1
% For the first frame, create the GIF file
imwrite(imind, cm, filename, 'gif', 'Loopcount', inf, 'DelayTime', 0.05);
else
% For subsequent frames, append to the GIF file
imwrite(imind, cm, filename, 'gif', 'WriteMode', 'append', 'DelayTime', 0.05);
end
end
%Using exportgraphics function
for k = 1:12
pause(0.05)
yy = makima(x, array_zeros(k, :), xx);
set(p, 'XData', xx, 'YData', yy);
exportgraphics(gcf,"animation2.gif","Append",true);
end
For further reference on both the functions please refer to the documentation links below:
Hope it helps.

Catégories

En savoir plus sur Printing and Saving dans Help Center et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by