MATLAB: How to create a gif

gifMATLAB

Hello!
I'm having trouble creating a gif for this script! Could anyone help me? Thanks
close all
clear all
clc
pt=randi([100,200],10,3);
plot3(pt(:,1),pt(:,2),pt(:,3),'o','markerfacecolor','r','markeredgecolor','r')
grid on
box
daspect([1 1 1])
x_lim=get(gca,'xlim')
y_lim=get(gca,'ylim')
z_lim=get(gca,'zlim')
set(gca,'xtick',[x_lim(1):25:x_lim(2)])
set(gca,'ytick',[y_lim(1):25:y_lim(2)])
set(gca,'ztick',[z_lim(1):25:z_lim(2)])
set(gca,'CameraViewAngle',[15])
for i=1:5:380
view(i,33)
pause(0.15)
end

Best Answer

You can use imwrite(). See the example titled "Write Animated GIF" here: https://www.mathworks.com/help/matlab/ref/imwrite.html#btv452g-1
For example
close all
clear all
clc
pt=randi([100,200],10,3);
plot3(pt(:,1),pt(:,2),pt(:,3),'o','markerfacecolor','r','markeredgecolor','r')
grid on
box
daspect([1 1 1])
x_lim=get(gca,'xlim');
y_lim=get(gca,'ylim');
z_lim=get(gca,'zlim');
set(gca,'xtick',[x_lim(1):25:x_lim(2)])
set(gca,'ytick',[y_lim(1):25:y_lim(2)])
set(gca,'ztick',[z_lim(1):25:z_lim(2)])
set(gca,'CameraViewAngle',[15])
for i=1:5:380
view(i,33)
pause(0.15)
frame = getframe(gcf);
[im, map] = rgb2ind(frame2im(frame),256);
if i == 1
imwrite(im, map, 'myAnimation.gif', 'gif', 'LoopCount', 1, 'DelayTime', 0.1);
else
imwrite(im, map, 'myAnimation.gif', 'gif', 'WriteMode', 'append', 'DelayTime', 0.1);
end
end