天天看點

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繪制效果如下所示:

Matlab 繪制動态圖

繼續閱讀