主要用到四个函数,分别为getframe、frame2im、rgb2ind以及imwrite:
1.getframe:获取当前绘图窗口的图片作为影片帧;
2.frame2im:从单个影片帧 F 返回索引图像数据 X 和关联的颜色图 Map;
3.rgb2ind:将RGB图像转换(2同to音)为索引(index)图像;
4.imwrite 函数就是起到将循环中得到的图片依次写入到GIF格式的图片中,其中参数‘DelayTime’表示相邻两张图片播放的间隔时间,单位秒,一定程度上决定了GIF动图播放时的流畅程度。
代码如下: 也可参考龙行天下288
f2 = figure;
for n = 1 : size(Qmass_gif,2)
x_Q = 1 : 1 : size(Qmass_gif,1);
y_Q = Qmass_gif(:,n);
l = (n-1) * 50;
set(f2, 'Color', 'white'); % 设置图片窗口背景颜色为白色
plot(x_Q, y_Q, 'LineWidth', 1.5, 'Color', 'b');
% 绘制x,y曲线,并设置线宽,曲线颜色,曲线图例名称
set(gca,'FontSize',12,'FontName','Bookman Old Style'); % 设置图片中字体的大小,样式
xlabel('cell number', 'FontSize',14); % 设置x轴标签
xlim([1, size(Qmass_gif,1)]); % 设置y轴标签
ylim([0, 0.015]); % 设置y轴标签
ylabel('mass flow kg/s', 'FontSize',14); % 设置y轴标签
legend(['inter=',num2str(l)],'FontSize',14, 'box', 'off'); % 为图片加上图例
title('GIF: Flow distribution)', 'FontSize',14); % 增加图片的标题
drawnow; % 立即刷新当前绘图窗口,这是matlab绘图中动态展示的关键
F = getframe(f2); % 获取当前绘图窗口的图片作为影片帧
Im = frame2im(F); % 返回与动态图片相关的图片数据
[A, map] = rgb2ind(Im, 256); % 将RGB图片转化为索引图片
filename = 'testAnimated.gif'; % GIF图片的保存路径
if n == 1
imwrite(A, map, filename , 'gif', 'Loopcount', Inf, 'DelayTime', 0.1);
% 将第一张图片写入GIF文件中,并且将GIF播放次数设置成无穷,即保存的GIF图会一直动下去
else
imwrite(A, map,filename ,'gif','WriteMode','append','DelayTime',0.1);
% 依次将其他的图片写入到GIF文件当中,DelayTime为时滞0.1s
end
end