找回密码
 注册
Simdroid-非首页
查看: 303|回复: 9

MATLAB动画如何保存?

[复制链接]
发表于 2009-5-17 18:51:23 | 显示全部楼层 |阅读模式 来自 香港
本帖最后由 ljelly 于 2009-5-18 09:14 编辑

如题, 请教各位前辈如何将MATLAB运行生成的动画结果,保存成单独文件,脱离matlab执行
发表于 2009-5-17 19:40:33 | 显示全部楼层 来自 浙江杭州
回复 不支持

使用道具 举报

 楼主| 发表于 2009-5-17 20:39:54 | 显示全部楼层 来自 香港
多谢, 但这种方法生成的AVI效果不是很好, 而且我的动画结果是一个持续的过程,不是循环的, 有没有生成GIF文件格式的方法呢?
回复 不支持

使用道具 举报

发表于 2009-5-18 00:16:18 | 显示全部楼层 来自 浙江杭州
3# siuchun


简单的方法,就是生成一张一张的图片,然后再用另外的图像处理软件生成gif文件。

直接生成比较复杂,用imwrite命令,喜欢的可以研究一下。

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2009-5-18 00:29:11 | 显示全部楼层 来自 新疆乌鲁木齐
好像有个getframe的相关命令,搜索一下看看,应该能够生成avi格式动画。
回复 不支持

使用道具 举报

发表于 2009-5-18 09:02:27 | 显示全部楼层 来自 天津
不是循环也能生成gif动画,需要每次添加一幅图片,给你一个用循环生成gif动画的程序
  1. %空间曲线在坐标面上的投影
  2. clear
  3. clc

  4. filename='xiantouying.gif';
  5. [x,y]=meshgrid(1:0.1:5);
  6. z=x.^0.456+y.^0.456+1.5;
  7. figure(1)
  8. backcolor=get(gcf,'Color');
  9. uicontrol(gcf,'style','text','units','normalized','pos',[0.04 0.02 0.25 0.15],...
  10.     'string',{'谢 * * 设计制作','QQ:56*****','天津**大学'},'fontsize',12,'fontweight','bold',...
  11.     'fontunits','normalized','Hor','left','ForegroundColor',[0.5,0.5,0.5],...
  12.     'bac',backcolor)
  13. set(gcf,'DoubleBuffer','on')
  14. surf(x,y,z)
  15. hold on
  16. quiver3(6,6,0,-1,0,0,6,'k','filled','LineWidth',2);
  17. quiver3(6,6,0,0,-1,0,6,'k','filled','LineWidth',2);
  18. quiver3(6,6,0,0,0,1,6,'k','filled','LineWidth',2);
  19. text(-0.2,6,0.3,'X')
  20. text(6,-0.2,0.4,'Y')
  21. text(6.2,5.5,6,'Z')
  22. axis equal
  23. axis off
  24. title('空间曲线在坐标面上的投影的动画演示','fontsize',14,'fontweight','bold')
  25. T=[    0.9582   -0.3393    0.0000   -0.3095
  26.     0.0821    0.2318    0.9703   -0.6421
  27.     0.3292    0.9298   -0.2419    8.2473
  28.          0         0         0    1.0000];
  29. view(T)
  30. zlim([0 6])
  31. shading interp
  32. colormap copper
  33. alpha(0.6)
  34. for i=1:7   
  35.     drawnow; % 刷新屏幕
  36.     pause(0.1)   
  37.     f=getframe(gcf);  
  38.     imind=frame2im(f);
  39.     [imind,cm] = rgb2ind(imind,256);
  40.     if i==1
  41.         imwrite(imind,cm,filename,'gif', 'Loopcount',inf,'DelayTime',0.4);
  42.     else
  43.         imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',0.4);
  44.     end
  45. end

  46. light('Position',[0 7 10],'Style','infinite')
  47. %brighten(-0.5)
  48. light('Position',[0 0 3],'Style','local')
  49. for i=1:4
  50.     drawnow; % 刷新屏幕
  51.     pause(0.1)  
  52.     f=getframe(gcf);  
  53.     imind=frame2im(f);
  54.     [imind,cm] = rgb2ind(imind,256);
  55.     imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',0.4);
  56. end

  57. X=x(y==5);
  58. Y=y(y==5);
  59. Z=z(y==5);
  60. patch([1 X' 5],[5 Y' 5],[0 Z' 0],[1 1 1])
  61. alpha(0.6)
  62. for i=1:4
  63.     drawnow; % 刷新屏幕
  64.     pause(0.1)
  65.     f=getframe(gcf);  
  66.     imind=frame2im(f);
  67.     [imind,cm] = rgb2ind(imind,256);
  68.     imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',0.4);
  69. end
  70. X=x(x==5);
  71. Y=y(x==5);
  72. Z=z(x==5);
  73. patch([5 X' 5],[1 Y' 5],[0 Z' 0],[1 1 1])
  74. alpha(0.6)
  75. for i=1:4
  76.     drawnow; % 刷新屏幕
  77.     pause(0.1)
  78.     f=getframe(gcf);  
  79.     imind=frame2im(f);
  80.     [imind,cm] = rgb2ind(imind,256);
  81.     imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',0.4);
  82. end
  83. X=x(y==1);
  84. Y=y(y==1);
  85. Z=z(y==1);
  86. patch([1 X' 5],[1 Y' 1],[0 Z' 0],[1 1 1])
  87. alpha(0.6)
  88. drawnow; % 刷新屏幕
  89. for i=1:4
  90.     pause(0.1)
  91.     f=getframe(gcf);  
  92.     imind=frame2im(f);
  93.     [imind,cm] = rgb2ind(imind,256);
  94.     imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',0.4);
  95. end
  96. X=x(x==1);
  97. Y=y(x==1);
  98. Z=z(x==1);
  99. patch([1 X' 1],[1 Y' 5],[0 Z' 0],[1 1 1])
  100. alpha(0.6)
  101. for i=1:4
  102.     drawnow; % 刷新屏幕
  103.     pause(0.1)
  104.     f=getframe(gcf);  
  105.     imind=frame2im(f);
  106.     [imind,cm] = rgb2ind(imind,256);
  107.     imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',0.4);
  108. end

  109. for i=1:8
  110.     patch([1 1 5 5],[5 1 1 5],[0 0 0 0],[0.5 0.5 0.5])
  111.     drawnow; % 刷新屏幕
  112.     pause(0.1)   
  113.     f=getframe(gcf);  
  114.     imind=frame2im(f);
  115.     [imind,cm] = rgb2ind(imind,256);
  116.     imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',0.4)
  117.     patch([1 1 5 5],[5 1 1 5],[0 0 0 0],[1 0.3 0.3])
  118.     drawnow; % 刷新屏幕
  119.     pause(0.1)   
  120.     f=getframe(gcf);  
  121.     imind=frame2im(f);
  122.     [imind,cm] = rgb2ind(imind,256);
  123.     imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',0.4);
  124. end

  125. for i=1:5   
  126.     drawnow; % 刷新屏幕
  127.     pause(0.1)   
  128.     f=getframe(gcf);  
  129.     imind=frame2im(f);
  130.     [imind,cm] = rgb2ind(imind,256);
  131.     imwrite(imind,cm,filename,'gif','WriteMode','append','DelayTime',0.4);
  132. end

  133. hold off
复制代码

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2009-5-18 09:17:15 | 显示全部楼层 来自 天津
精简之后生成的效果如图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复 不支持

使用道具 举报

 楼主| 发表于 2009-5-18 13:49:44 | 显示全部楼层 来自 香港
多谢各位了,我先研究研究~
回复 不支持

使用道具 举报

 楼主| 发表于 2009-5-18 23:25:38 | 显示全部楼层 来自 香港
.......
最简单的方法,直接用一视频录像工具录制了....:L

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2009-5-27 18:49:13 | 显示全部楼层 来自 湖南长沙
不错,学习啦。谢谢楼上的高手。

评分

1

查看全部评分

回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-5-19 12:58 , Processed in 0.045737 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表