MATLAB 制作gif动态图

MATLAB 制作gif动态图的基本思想就是,将一张张的静态图组合成一张能动的gif图片,并保存到相应的位置。
那么,要想制作一张动态图,首先要有若干个静态图,并且他们的索引值是连续的。下面先说一下matlab关于静态图的绘制及其保存。

1、MATLAB静态图绘制及保存

下面以一个sin函数为例进行说明。实例是这样的:有一个运动轨迹sin(t),t=0:30。现在有一个小球去跟踪这个sin曲线。
(1)首先画出y=sin(t)的图像:
m语言:

t=1:0.1:30;
y=sin(t);
plot(t,y);
grid on

得到如下图像:

这里写图片描述

接下来要定义一个小球去跟踪上面的曲线,并将跟踪过程中生成的图片保存到当前工作路径下的image文件夹下:

%迭代值
i=0;
%设置小球属性,横坐标数据为'xdata',纵坐标数据为'ydata',红色,大小为30
h = line('xdata',[],'ydata',[],'color','r','marker','.','markersize',30);
for ii=1:length(y)
    %跟踪上述曲线
    set(h,'xdata',t(ii),'ydata',y(ii));
    %建立新图像
    figure();
    %绘制
    drawnow 
    %可认为是小球一定速度
    pause(0.1)
    hold on
    i=i+1;
    %保存图片,位置为:/image,名称为i.bmp
    print(1,'-dbmp',sprintf('image/%d',i))
    %关闭figure()
    close;
end

由此变生成了0.bmp~291.bmp共291张图片,并保存在当前工作路径下的image文件夹下,如下图所示。
这里写图片描述

2、生成gif图片

根据上述操作,我们得到了名为0-291.bmp的图片。接下来要根据这291张图片制作一张gif图片。

%依次读取生成的所有图片
for j=1:length(y)
    %获取当前图片
    A=imread(sprintf('image/%d.bmp',j));
    [I,map]=rgb2ind(A,256);
    %生成gif,并保存
    if(j==1)
        imwrite(I,map,'movefig.gif','DelayTime',0.1,'LoopCount',Inf)
    else
        imwrite(I,map,'movefig.gif','WriteMode','append','DelayTime',0.1)    
    end
end

最后生成的gif图片如下:
这里写图片描述

  • 32
    点赞
  • 209
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值