matlab生成gif动图

代码如下:

clc
clear
pic_num = 1;
for epsilon = 0.01:-0.001:0.005
    t = 1;
    syms x;
    ur = -1;
    ul = 1;
    s = (ur + ul)/2;
    w = ur + 1/2*(ul - ur)*(1-tanh((ul-ur)*(x-s*t)/(4*epsilon)));
    figure(1);
    ezplot(w);
    axis([-0.05,0.05 -1.5 1.5])
    drawnow;
    F=getframe(gcf);
    I=frame2im(F);
    [I,map]=rgb2ind(I,256);
    if pic_num == 1
        imwrite(I,map,'test.gif','gif', 'Loopcount',inf,'DelayTime',0.2);
    else
        imwrite(I,map,'test.gif','gif','WriteMode','append','DelayTime',0.2);
    end
    pic_num = pic_num + 1;
end

特殊的函数:
1、drawnow:刷新屏幕。当代码执行时间长,需要反复执行plot时,Matlab程序不会马上把图像画到figure上,这时,要想实时看到图像的每一步变化情况,需要使用这个语句。我们需要实时显示,因此需要使用这个函数。
2、getframe:捕获坐标区或图窗作为影片帧。
3、gcf:返回当前figure的句柄。
4、frame2im:返回与影片帧关联的图像数据。输出一个三维矩阵。
5、rgb2ind:将rgb图像转化成索引图像。
重点的代码:imwrite,当写第一帧的时候,使用Loopcountinf,当其他帧的时候,使用WriteModeappend追加。
生成结果:
在这里插入图片描述

  • 28
    点赞
  • 118
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
要在Matlab中画,你可以使用以下方法: 1. 使用imwrite函数将片写入到gif中。你需要使用for循环来生成每一帧的片,并使用imwrite函数将每一帧片写入gif。具体的使用方法可以参考imwrite函数的调用格式。 2. 使用print函数生成片。你可以使用for循环生成每一帧的片,然后使用print函数保存每一帧的片。最后,使用imwrite函数将片逐帧写入gif。 下面是一个示例代码,可以帮助你理解如何在Matlab中画: ``` clc clear close all x = 1:0.1:10; figure(1) grid minor hold on title('y = sin(x)') xlabel('x'); ylabel('y') %% 生成片 for i = 1:length(x) y(i) = sin(x(i)); plot(x(1:i),y(1:i),'r--','linewidth',1.2); hold on drawnow print(['E:\picture',num2str(i)],'-dpng'); %保存片 end %% 片播放 GifName = 'example.gif'; %名字 delay = 0.1; %片之间延迟 for i = 1:length(x) A = imread(['E:\picture',num2str(i),'.png']); %读取片 [X, map = rgb2ind(A, 256); %彩色像转化成索引像 if i == 1 imwrite(X, map, GifName, 'gif', 'LoopCount', inf, 'DelayTime', delay) else imwrite(X, map, GifName, 'gif', 'WriteMode', 'append', 'DelayTime', delay) end end ``` 这个示例代码将生成一连串的sin函数像,并将每一帧像保存为png格式的片。然后,使用imwrite函数将这些片逐帧写入gif"example.gif"中。 希望这个示例代码对你有帮助,可以让你更好地理解如何在Matlab中画。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Matlab绘制的两种方式(参考)](https://blog.csdn.net/u010480899/article/details/78234884)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [使用Matlab绘制gif](https://blog.csdn.net/H460367792/article/details/124970213)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MichaelToLearn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值