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环境都可以播放动画。

具体参见:

该方法的经典格式是:

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

%录制电影动画
for j=:n
%
%这里输入我们的绘图命令
%
M(j) = getframe;
end
movie(M)
%举个我曾经做过的凸轮机构 运动仿真的实例
%%以下仅为 运动movie部分代码
%-----------------运动仿真开始-------------------
figure()
m=moviein();
j=;
for i=:
j=j+;
delta(i)=i*hd;%凸轮转角
xy=[xp',yp'];%凸轮实际轮廓曲线坐标
A1=[cos(delta(i)),sin(delta(i)); %凸轮曲线坐标旋转矩阵
-sin(delta(i)),cos(delta(i))];
xy=xy*A1;%旋转实际凸轮轮廓曲线坐标
clf;
%-----------------绘制凸轮------------------
plot(xy(:,),xy(:,));%绘制凸轮
hold on;grid on;axis equal;
axis([(-) () (-) ()]);
plot([-(r0+h-) (r0+h) ],[ ],'k','LineWidth',);%绘制凸轮水平轴
plot([ ],[-(r0+h) (r0+rr)],'k','LineWidth',);%绘制凸轮垂直轴
plot(r0*cos(ct),r0*sin(ct),'g--','LineWidth',);%绘制基圆
plot(e*cos(ct),e*sin(ct),'c-','LineWidth',);%绘制偏距圆
plot(e+rr*cos(ct),s0+s(i)+rr*sin(ct),'k','LineWidth',);%绘制滚子圆
plot([e e+rr*cos(-phi(i))],[s0+s(i) s0+s(i)+rr*sin(-phi(i))],'k','LineWidth',);
%绘制滚子圆标线
plot([e e],[s0+s(i) s0+s(i)+],'k','LineWidth',);%绘制推杆
%------------------绘制推杆曲线-----------------------------
plot([:]+r0+h,s+s0);%绘制推杆曲线
plot([(r0+h) (r0+h+)],[s0,s0],'k','LineWidth',);%绘制推杆垂直轴
plot([(r0+h) (r0+h)],[s0 s0+h],'k','LineWidth',);%绘制水平轴
plot(i+r0+h,s(i)+s0,'r.','LineWidth',1.5);%绘制推杆曲线坐标动点
title('偏置直动滚子推杆盘形凸轮设计');
xlabel('x/mm');
ylabel('y/mm');
m(j)=getframe;
end
movie(m);

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

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

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

%随意单张图片代码如下:

x=-:0.5:;

[XX,YY]=meshgrid(x);  

r=sqrt(XX.^+YY.^)+eps;

Z=sin(r)./r;

surf(Z);  %%生成了一幅静态的surf图片,XX,YY由meshgrid生成

theAxes=axis;

fmat=moviein();

for j=:;

 surf(sin(*pi*j/)*Z,Z)   %%取每一帧

 axis(theAxes)

 fmat(:,j)=getframe;

end

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. iOS----------常见经典错误

    最近使用cocoapods集成友盟  发现几个经典错误 1.clang: error: linker command failed with exit code 1 (use -v to see in ...

  2. Android 运行报错 Unknown failure (at android.os.Binder.execTransact(Binder.java:681)) Error while Installing APKs 解决办法

    今天,我用手机测试的时候出现了这个错误 我网站查找了一会资料, 在运行的时候出现提示大致意思:卸载删除已存在应用程序,是否卸载现有应用程序,点击ok就会出现如下错误 原应用程序也没有卸载,然后自己手动 ...

  3. angular部署到iis出现404解决方案

    angular应用部署在iis上,刷新出现404 解决方案: 安装 iis URL Rewrite 模块,并在 src 目录下增加web.config,配置urlrewrite如下: <conf ...

  4. 容器化系列 - 通过Grafana监测InfluxDB数据 on Docker

    本文演示在Docker中运行Grafana和InfluxDB,并通过Grafana展示InfluxDB曲线图. 1 准备工作 1.1 安装Docker 请参考这里 1.2 下载镜像 $ docker ...

  5. Sql Server 获取本周周一

    SELECT DATEADD(Day,(@i+1)-(DATEPART(Weekday,getdate())+@@DATEFIRST-1)%7,getdate())

  6. c/c++ 多线程 detach的困惑

    多线程 detach的困惑 求大神解答: 1,当在一个函数里启动一个线程后,并detach了 2,detach的线程里使用了这个函数里new出来的一个对象 3,detach后,delete了这个对象 ...

  7. Altium Designer 复制和粘贴功能

    在使用Altium Deigner时,很多时候会使用到复制和粘贴功能,Altium Designer复制分为三步:第一步选中要复制的内容(包括点选和框选),第二步,启动COPY命令,这时光标会变成十字 ...

  8. Docker的使用初探(一):常用指令说明

    目录 Docker的使用初探(一):常用指令说明 为什么要用Docker Docker的安装与简单使用 国内镜像加速 常用指令 Docker的使用初探(一):常用指令说明 前几个星期实践的了,再不记录 ...

  9. django自定义分页器

    一 django 的分页器 1 批量创建数据 批量导入数据: Booklist=[] for i in range(100): Booklist.append(Book(title="boo ...

  10. Windows Service 学习系列(二):C# windows服务:安装、卸载、启动和停止Windows Service几种方式

    一.通过InstallUtil.exe安装.卸载.启动.停止Windows Service 方法一 1.以管理员身份运行cmd 2.安装windows服务 切换cd C:\Windows\Micros ...