在写论文的过程中,我们经常需要用MATLAB绘制图形。论文中的图形都是图片格式,但是在展示和汇报时,如果将图形做成GIF动图,变量的变化过程就会非常直观,展示效果也会非常好。下面将本人利用MATLAB绘制GIF动图的方法分享给大家。
- 前提:已经利用MATLAB完成了图片的绘制,保存有变量数据
具体程序如下所示:
figure(1)
clf;
box on;
%坐标轴信息
xlabel({'时间(s)'},'FontSize',40)
ylabel({'$z_{i1}(t)$'},'Interpreter','latex','FontSize',40)
%设置坐标轴线宽
set(gca,'LineWidth',2,'FontSize',40)
%坐标显示范围
axis([0,1.5,-50,100])
legend('智能体1','智能体2','智能体3','智能体4','智能体5','智能体6','智能体7','智能体8');
pausetime=0.001; %设置绘图速度
pause(1);
%绘制八条曲线,设置每条曲线的颜色和线宽
h1=line(NaN,NaN,'color','r','linewidth',2.5);
h2=line(NaN,NaN,'color','b','linewidth',2.5);
h3=line(NaN,NaN,'color','k','linewidth',2.5);
h4=line(NaN,NaN,'color','g','linewidth',2.5);
h5=line(NaN,NaN,'color','r','linewidth',2.5);
h6=line(NaN,NaN,'color','g','linewidth',2.5);
h7=line(NaN,NaN,'color','b','linewidth',2.5);
h8=line(NaN,NaN,'color','k','linewidth',2.5);
t=1*(0.001:0.001:1.5);
%直接用n=1:length(t),绘制速度超级慢;n=1:20:length(t) ,中间的20表示多久取一次样,可以调节绘制速度
for n=1:20:length(t)
%z1,z2,...,z8是之前MATLAB绘图时,保存的变量,也就是前提条件中的绘制图形保存的变量
set(h1,'xdata',t(1:n),'ydata',z1(1,1:n));%设置质点1的运动
set(h2,'xdata',t(1:n),'ydata',z2(1,1:n));%设置质点2的运动
set(h3,'xdata',t(1:n),'ydata',z3(1,1:n));%设置质点3的运动
set(h4,'xdata',t(1:n),'ydata',z4(1,1:n));%设置质点4的运动
set(h5,'xdata',t(1:n),'ydata',z5(1,1:n));%设置质点5的运动
set(h6,'xdata',t(1:n),'ydata',z6(1,1:n));%设置质点6的运动
set(h7,'xdata',t(1:n),'ydata',z7(1,1:n));%设置质点7的运动
set(h8,'xdata',t(1:n),'ydata',z8(1,1:n));%设置质点8的运动
pause(pausetime);
legend('智能体1','智能体2','智能体3','智能体4','智能体5','智能体6','智能体7','智能体8');
drawnow;
%下面是保存为GIF的程序
frame=getframe(gcf);
imind=frame2im(frame);
[imind,cm] = rgb2ind(imind,256);
if n==1
imwrite(imind,cm,'Z1.gif','gif', 'Loopcount',inf,'DelayTime',1e-4);
else
imwrite(imind,cm,'Z1.gif','gif','WriteMode','append','DelayTime',0);
end
end
GIF绘制效果如下所示: