Matlab 绘制动态图

在写论文的过程中,我们经常需要用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绘制效果如下所示:
在这里插入图片描述

  • 13
    点赞
  • 123
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值