分享

MATLAB中gif格式动画制作教程|MATLAB 基础知识讨论|MATLAB技术论坛

 磨菜刀的老花匠 2018-08-20
gif格式动画以其小巧受到大家的广泛欢迎,本贴以案例形式做一个总结。

作gif动画要用到getframe、frame2im、rgb2ind和imwrite函数,getframe函数用来抓取当前图形窗口中的图像,frame2im函数和rgb2ind函数用来将抓取的图像转为索引图像,imwrite函数用来将索引图像写入gif格式动画,需要注意的是imwrite函数不能将真彩图像写入gif格式动画。关于这些函数的具体用法,这里不再详述,请版友自行查阅帮助。下面只给出案例。
【例1】绕螺旋线运动的小球
效果图:xiezhh.gif

  1. filename = 'xiezhh.gif';
  2. z = linspace(0, 10*pi, 100);    %产生一个行向量
  3. x = [20*sin(z),zeros(1,10)];
  4. y = [20*cos(z),20*ones(1,10)];
  5. z = [z,linspace(10*pi,0,10)];
  6. plot3(x, y, z, 'r', 'linewidth', 2);    %绘制螺旋线
  7. hold on    %图形保持
  8. h = plot3(0,20,0, '.' , 'MarkerSize' ,40, 'EraseMode' , 'xor' );
  9. xlabel('X'); ylabel('Y'); zlabel('Z');    %添加坐标轴标签
  10. axis([-25 25 -25 25 0 40]);    %设置坐标轴范围
  11. view(-210,30);    %设置视角

  12. for i = 1:length(x)
  13.     set(h, 'xdata' ,x(i), 'ydata' ,y(i), 'zdata' ,z(i));     
  14.     drawnow; % 刷新屏幕
  15.     pause(0.05)   
  16.     f = getframe(gcf);  
  17.     imind = frame2im(f);
  18.     [imind,cm] = rgb2ind(imind,256);
  19.     if i == 1
  20.         imwrite(imind,cm,filename,'gif', 'Loopcount',inf,'DelayTime',0.1);
  21.     else
  22.         imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',0.1);
  23.     end
  24. end

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多