MATLAB 将多张figure生成gif,title随循环自动改变

实现功能
MATLAB将循环生成的多张图片整合为一个gif文件,并且title可以随着循环自动改变

实现代码

      del = 0.5; % time between animation frames
      
      for i = 1 : 10
          Fig = figure(1);
          filename = 'saved_gif.gif';
          x(i) = i;
          y = x + 1;
          plot(x,y);
          xlim([0 10]);
          ylim([0 15]);
          title(['x = ' num2str(i) ' with constant 1']);
          drawnow 
      
        % capture the plot as an image
          frame = getframe(Fig);
          im = frame2im(frame);
          [imind,cm] = rgb2ind(im,256);
          if i == 1
            imwrite(imind,cm,filename,'gif','Loopcount',inf,'DelayTime',del);
          else
            imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',del);
          end
      end

生成结果如图如下图所示:
result

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以帮你写一个简单的太阳系模拟代码,并生成GIF文件。以下是代码: ```matlab % 太阳系模拟代码 clear all; close all; % 太阳系的行星数量 n = 8; % 太阳质量 M(1) = 1.989e30; % 行星质量 M(2) = 3.285e23; % 水星 M(3) = 4.867e24; % 金星 M(4) = 5.972e24; % 地球 M(5) = 6.39e23; % 火星 M(6) = 1.898e27; % 木星 M(7) = 5.68e26; % 土星 M(8) = 8.683e25; % 天王星 M(9) = 1.024e26; % 海王星 % 初始位置 x0 = [0, 0, 0; % 太阳 5.79e10, 0, 0; % 水星 1.08e11, 0, 0; % 金星 1.496e11, 0, 0; % 地球 2.28e11, 0, 0; % 火星 7.78e11, 0, 0; % 木星 1.43e12, 0, 0; % 土星 2.87e12, 0, 0; % 天王星 4.5e12, 0, 0]; % 海王星 % 初始速度 v0 = [0, 0, 0; 0, 4.79e4, 0; 0, 3.5e4, 0; 0, 2.98e4, 0; 0, 2.41e4, 0; 0, 1.31e4, 0; 0, 9.69e3, 0; 0, 6.81e3, 0; 0, 5.43e3, 0]; % 时间步长 dt = 3600*24; % 总时间 T = 3600*24*365*10; % 计算轨迹 x = zeros(n, 3, T/dt+1); v = zeros(n, 3, T/dt+1); x(:,:,1) = x0; v(:,:,1) = v0; for i = 1:T/dt for j = 1:n F = [0, 0, 0]; for k = 1:n if j ~= k r = x(k,:,i) - x(j,:,i); F = F + G*M(j)*M(k)/norm(r)^3*r; end end v(j,:,i+1) = v(j,:,i) + F/M(j)*dt; x(j,:,i+1) = x(j,:,i) + v(j,:,i+1)*dt; end end % 画图 figure; hold on; for i = 1:n plot3(x(i,1,:), x(i,2,:), x(i,3,:)); end grid on; xlabel('x'); ylabel('y'); zlabel('z'); title('太阳系模拟'); % 生成GIF文件 filename = '太阳系模拟.gif'; % 文件名 h = figure; for i = 1:T/dt+1 for j = 1:n plot3(x(j,1,i), x(j,2,i), x(j,3,i), 'o', 'MarkerSize', 10*M(j)/M(1), 'MarkerFaceColor', rand(1,3), 'MarkerEdgeColor', 'none'); hold on; end grid on; xlabel('x'); ylabel('y'); zlabel('z'); title(['太阳系模拟,第', num2str(i), '步']); axis equal; axis([-8e12, 8e12, -8e12, 8e12, -8e12, 8e12]); hold off; drawnow; frame = getframe(h); im = frame2im(frame); [imind,cm] = rgb2ind(im,256); if i == 1 imwrite(imind,cm,filename,'gif', 'Loopcount',inf, 'DelayTime', 0.1); else imwrite(imind,cm,filename,'gif', 'WriteMode','append', 'DelayTime', 0.1); end end ``` 这个代码使用了欧拉方法对行星的运动轨迹进行模拟,并生成了一个GIF文件,可以让你更好地观察太阳系的运动。你可以根据需要更改行星的质量、初始位置和速度等参数。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值