MATLAB中,创建电影动画的过程分为以下四步:

step1:调用moviein函数对内存进行初始化(该步骤在Matlab5.3以上均可省略),创建一个足够大的矩阵,使之能够容纳基于当前坐标轴大小的一系列指定的图形(此处称为帧)。

step2:调用getframe函数生成每个帧。该函数返回一个列矢量,利用这个矢量,就可以创建一个电影动画矩阵。

getframe函数可以捕捉动画帧,并保存到矩阵中。一般将该函数放到for循环中得到一系列的动画帧。
该函数格式有:
(1)F=gefframe,从当前图形框中得到动画帧
(2)F=gefframe(h),从图形句柄h中得到动画帧
(3)F=getframe(h,rect),从图形句柄h的指定区域rec中得到动画帧

step3:调用movie函数按照指定的速度和次数运行该电影动画。

当创建了一系列的动画帧后,可以利用movie函数播放这些动画帧。
该函数的主要格式有:
(1)movie(M),将矩阵M中的动画帧播放一次
(2)movie(M,n),将矩阵M中的动画帧播放n次
(3)movie(M,n,fps),将矩阵M中的动画帧以每秒fps帧的速度播放n次

step4:调用movie2avi函数可以将矩阵中的一系列动画帧转换成视频文件avi文件。这样,即使脱离了matlab环境都可以播放动画。

具体参见:

该方法的经典格式是:

  1. %-----------------------------------------------
  2.  
  3. %录制电影动画
  4. for j=:n
  5. %
  6. %这里输入我们的绘图命令
  7. %
  8. M(j) = getframe;
  9. end
  10. movie(M)
  1. %举个我曾经做过的凸轮机构 运动仿真的实例
  2. %%以下仅为 运动movie部分代码
  3. %-----------------运动仿真开始-------------------
  4. figure()
  5. m=moviein();
  6. j=;
  7. for i=:
  8. j=j+;
  9. delta(i)=i*hd;%凸轮转角
  10. xy=[xp',yp'];%凸轮实际轮廓曲线坐标
  11. A1=[cos(delta(i)),sin(delta(i)); %凸轮曲线坐标旋转矩阵
  12. -sin(delta(i)),cos(delta(i))];
  13. xy=xy*A1;%旋转实际凸轮轮廓曲线坐标
  14. clf;
  15. %-----------------绘制凸轮------------------
  16. plot(xy(:,),xy(:,));%绘制凸轮
  17. hold on;grid on;axis equal;
  18. axis([(-) () (-) ()]);
  19. plot([-(r0+h-) (r0+h) ],[ ],'k','LineWidth',);%绘制凸轮水平轴
  20. plot([ ],[-(r0+h) (r0+rr)],'k','LineWidth',);%绘制凸轮垂直轴
  21. plot(r0*cos(ct),r0*sin(ct),'g--','LineWidth',);%绘制基圆
  22. plot(e*cos(ct),e*sin(ct),'c-','LineWidth',);%绘制偏距圆
  23. plot(e+rr*cos(ct),s0+s(i)+rr*sin(ct),'k','LineWidth',);%绘制滚子圆
  24. plot([e e+rr*cos(-phi(i))],[s0+s(i) s0+s(i)+rr*sin(-phi(i))],'k','LineWidth',);
  25. %绘制滚子圆标线
  26. plot([e e],[s0+s(i) s0+s(i)+],'k','LineWidth',);%绘制推杆
  27. %------------------绘制推杆曲线-----------------------------
  28. plot([:]+r0+h,s+s0);%绘制推杆曲线
  29. plot([(r0+h) (r0+h+)],[s0,s0],'k','LineWidth',);%绘制推杆垂直轴
  30. plot([(r0+h) (r0+h)],[s0 s0+h],'k','LineWidth',);%绘制水平轴
  31. plot(i+r0+h,s(i)+s0,'r.','LineWidth',1.5);%绘制推杆曲线坐标动点
  32. title('偏置直动滚子推杆盘形凸轮设计');
  33. xlabel('x/mm');
  34. ylabel('y/mm');
  35. m(j)=getframe;
  36. end
  37. movie(m);

%单帧显示方法
       f = getframe(gcf);
       colormap(f.colormap);
       image(f.cdata);

%------------------------------------------------

此外,利用immovie函数,我们可以从多帧图像阵列中创建MATALB 电影动画。[没用过]

  1. %随意单张图片代码如下:
  2.  
  3. x=-:0.5:;
  4.  
  5. [XX,YY]=meshgrid(x);
  6.  
  7. r=sqrt(XX.^+YY.^)+eps;
  8.  
  9. Z=sin(r)./r;
  10.  
  11. surf(Z); %%生成了一幅静态的surf图片,XX,YYmeshgrid生成
  12.  
  13. theAxes=axis;
  14.  
  15. fmat=moviein();
  16.  
  17. for j=:;
  18.  
  19. surf(sin(*pi*j/)*Z,Z) %%取每一帧
  20.  
  21. axis(theAxes)
  22.  
  23. fmat(:,j)=getframe;
  24.  
  25. end
  26.  
  27. movie(fmat,) %动画放10

Matlab 中movie函数的使用的更多相关文章

  1. matlab中patch函数的用法

    http://blog.sina.com.cn/s/blog_707b64550100z1nz.html matlab中patch函数的用法——emily (2011-11-18 17:20:33) ...

  2. matlab中subplot函数的功能

    转载自http://wenku.baidu.com/link?url=UkbSbQd3cxpT7sFrDw7_BO8zJDCUvPKrmsrbITk-7n7fP8g0Vhvq3QTC0DrwwrXfa ...

  3. 【原创】Matlab中plot函数全功能解析

    [原创]Matlab中plot函数全功能解析 该帖由Matlab技术论(http://www.matlabsky.com)坛原创,更多精彩内容参见http://www.matlabsky.com 功能 ...

  4. matlab 中max函数用法

    Matlab中max函数在矩阵中求函数大小的实例如下:(1)C = max(A)返回一个数组各不同维中的最大元素.如果A是一个向量,max(A)返回A中的最大元素.如果A是一个矩阵,max(A)将A的 ...

  5. Matlab中plot函数全功能解析

    Matlab中plot函数全功能解析 功能 二维曲线绘图 语法 plot(Y)plot(X1,Y1,...)plot(X1,Y1,LineSpec,...)plot(...,'PropertyName ...

  6. matlab中cumsum函数

    matlab中cumsum函数通常用于计算一个数组各行的累加值.在matlab的命令窗口中输入doc cumsum或者help cumsum即可获得该函数的帮助信息. 格式一:B = cumsum(A ...

  7. 『转载』Matlab中fmincon函数获取乘子

    Matlab中fmincon函数获取乘子 一.输出结构 [x,fval,exitflag,output,lambda] = fmincon(......) 二.结构说明 lambda结构 说     ...

  8. matlab中norm函数的用法

    格式:n=norm(A,p) 功能:norm函数可计算几种不同类型的矩阵范数,根据p的不同可得到不同的范数 以下是Matlab中help norm 的解释 NORM   Matrix or vecto ...

  9. matlab中fprintf函数的具体使用方法

    matlab中fprintf函数的具体使用方法实例如下: fprintf函数可以将数据按指定格式写入到文本文件中.其调用格式为: 数据的格式化输出:fprintf(fid, format, varia ...

  10. matlab中repmat函数的用法(堆叠矩阵)

    matlab中repmat函数的用法 B = repmat(A,m,n) B = repmat(A,[m n]) B = repmat(A,[m n p...]) 这是一个处理大矩阵且内容有重复时使用 ...

随机推荐

  1. mssql sqlserver获取指定月份当月天数总和

    摘要: 下文通过sql函数的形式,获取指定月份的总天数 实验环境:sqlserver 2008 R2 制作思路: 1. 获取指定月份的第一天, 2. 并采用dateadd向后加一个月形成一个新的日期 ...

  2. Rsync客户端卡死的问题查询

    简介 某备份系统大量使用rsync来传输文件,但是偶尔会出现rsync客户端在上传数据的时候长时间卡死,本文记录了解决问题的步骤. 本文只涉及rsync客户端中IO相关逻辑,关于rsync的发送算法并 ...

  3. 浅谈TCP IP协议栈(三)路由器简介

    读完这个系列的第一篇浅谈TCP/IP协议栈(一)入门知识和第二篇浅谈TCP/IP协议栈(二)IP地址,在第一篇中,可能我对协议栈中这个栈的解释有问题,栈在数据结构中是一种先进后出的常见结构,而在整个T ...

  4. crosstool-ng-1.22.0搭建开发环境

        Ubuntu16.04无法安装libtool,只能在Ubuntu14.04以下版本安装. cp 下载/crosstool-ng-1.22.0.tar.bz2 /home/hou/ tar -x ...

  5. LeetCode算法题-N-ary Tree Preorder Traversal(Java实现)

    这是悦乐书的第268次更新,第282篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第135题(顺位题号是589).给定一个n-ary树,返回其节点值的前序遍历.例如,给定 ...

  6. phoenix API服务发布

    概述 Elixir 的 Phoenix 框架对于开发 Web 应用非常方便,不仅有 RoR 的便利,还有 Erlang 的性能和高并发优势. 但是应用的发布涉及到 Erlang 和 Elixir 环境 ...

  7. 第二节 pandas 基础知识

    pandas 两种数据结构 Series和DataFrame 一  Series 一种类似与一维数组的对象 values:一组数据(ndarray类型) index:相关的数据索引标签 1.1  se ...

  8. 【字】biang

    biang biang面的名字由来:biangbiang面是陕西关中地区的一中地区美食,因为在做这种面时会发出biang biang的声音,biang biang面因此得名.biang字简体共有42笔 ...

  9. git添加/删除远程仓库

    注意:仓库只有管理员建的你才有权限上传,不然自己建的也没用,没权限上传 1.远程仓库路径查询 git remote -v 2.添加远程仓库 git remote add origin <你的项目 ...

  10. SQL 约束 (Constraints)

    SQL 约束 约束用于限制加入表的数据的类型. 可以在创建表时规定约束(通过 CREATE TABLE 语句),或者在表创建之后也可以(通过 ALTER TABLE 语句). 我们将主要探讨以下几种约 ...