文档章节

Matlab 中movie函数的使用

o
 osc_z1hvg4cu
发布于 2018/04/24 22:14
字数 916
阅读 32
收藏 0

精选30+云产品,助力企业轻松上云!>>>

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=1:n
          %
          %这里输入我们的绘图命令
          %
          M(j) = getframe;
       end
       movie(M)
%举个我曾经做过的凸轮机构 运动仿真的实例
%%以下仅为 运动movie部分代码
%-----------------运动仿真开始------------------- 
figure(2) 
m=moviein(20); 
j=0; 
for i=1:360 
     j=j+1; 
     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(:,1),xy(:,2));%绘制凸轮 
     hold on;grid on;axis equal; 
     axis([(-180) (470) (-200) (240)]); 
     plot([-(r0+h-40) (r0+h) ],[0 0],'k','LineWidth',2);%绘制凸轮水平轴 
     plot([0 0],[-(r0+h) (r0+rr)],'k','LineWidth',2);%绘制凸轮垂直轴 
     plot(r0*cos(ct),r0*sin(ct),'g--','LineWidth',2);%绘制基圆 
     plot(e*cos(ct),e*sin(ct),'c-','LineWidth',2);%绘制偏距圆 
     plot(e+rr*cos(ct),s0+s(i)+rr*sin(ct),'k','LineWidth',2);%绘制滚子圆 
     plot([e e+rr*cos(-phi(i))],[s0+s(i) s0+s(i)+rr*sin(-phi(i))],'k','LineWidth',2); 
     %绘制滚子圆标线 
     plot([e e],[s0+s(i) s0+s(i)+40],'k','LineWidth',2);%绘制推杆 
     %------------------绘制推杆曲线----------------------------- 
     plot([1:360]+r0+h,s+s0);%绘制推杆曲线 
     plot([(r0+h) (r0+h+360)],[s0,s0],'k','LineWidth',2);%绘制推杆垂直轴 
     plot([(r0+h) (r0+h)],[s0 s0+h],'k','LineWidth',2);%绘制水平轴 
     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=-8:0.5:8;

[XX,YY]=meshgrid(x);  

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

Z=sin(r)./r;

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

theAxes=axis;

fmat=moviein(20);

for j=1:20;

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

 axis(theAxes)

 fmat(:,j)=getframe;

end

movie(fmat,10)  %动画放10遍

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
Matlab使用技巧

(1) Matlab强制退出正在运行的程序 A: Ctrl + C (2)如何让Matlab跑完程序后自动关机? A: 在程序的末尾加上一条代码: system('shutdown -s') 当然,记得在这条语句前加上保存结果的save,不...

osc_3nz5xau6
2018/11/15
1
0
Matlab基础命令

MATLAB常用命令 命令 功能 clc 擦除命令 clear 清除工作空间中所有的变量 clear all 从工作空间中清除所有变量和函数 clf 清除图形窗口信息 error 显示错误信息 显示当前空间中所有变量的一个...

osc_ma60u6gg
2018/02/27
2
0
[zt]C++二维数组讲解、二维数组的声明和初始化

定义: int *pia = new int[10]; // array of 10 uninitialized ints 此 new 表达式分配了一个含有 10 个 int 型元素的数组,并返回指向该数组第一个元素的指针,此返回值初始化了指针 pia。...

osc_85868zg3
2018/08/21
21
0
matlab绘图与可视化

1、设置图形对象属性值 set(h,'属性名称','属性值') >> subplot(1,2,1);h1=line([0 1],[0 1]);text(0,0.5,'unchange');subplot(1,2,2);h2=line([0 1],[0 1]);set(h2,'linewidth',4);text(0,0......

osc_0zs17uxd
2018/05/29
2
0
MATLAB图像处理工具箱

下列表格中除了个别函数外,其余函数都是图像处理工具箱提供的关于图像处理的函数,现摘录到此以备查找。 表1 图像显示 函数名 功能说明 函数名 功能说明 colorbar 颜色条显示 montage 按矩形...

ranjiewen
2016/11/03
200
0

没有更多内容

加载失败,请刷新页面

加载更多

Eclipse_JavaEE_Tomcat_MySQL环境配置

安装java环境,配置系统变量(JAVA_HOME,绝对路径) 下载eclipse+Tomcat+mysql window——》preference——》server——》runtime——》tomcat环境 项目右键build path 配mysql jar ,libra...

愿有时光可回首
24分钟前
20
0
MySQL原理 - InnoDB引擎 - 行记录存储 - Redundant行格式

本文基于 MySQL 8 在上一篇:MySQL原理 - InnoDB引擎 - 行记录存储 - Compact格式 中,我们介绍了什么是 InnoDB 行记录存储以及 Compact 行格式,在这一篇中,我们继续介绍其他三种行格式。 ...

zhxhash
45分钟前
17
0
leetcode面试题 17.13(恢复空格)--Java语言实现

求: 哦,不!你不小心把一个长篇文章中的空格、标点都删掉了,并且大写也弄成了小写。像句子"I reset the computer. It still didn’t boot!"已经变成了"iresetthecomputeritstilldidntboo...

拓拔北海
54分钟前
19
0
B站跨年晚会究竟做对了什么?

燃财经(ID:rancaijing)原创 作者 | 赵磊 编辑 | 周昶帆 “补课”是《bilibili晚会 二零一九最美的夜》这个视频中,观众在前两分钟刷得最多的弹幕,寓意着观众是在元旦之后回来补看跨年晚会...

子乾建建_Jeff
01/07
45
0
关于Scrapy爬虫项目运行和调试的小技巧(上篇)

点击上方“Python爬虫与数据挖掘”,进行关注 回复“书籍”即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 迟日江山丽,春风花草香。泥融飞燕子,沙暖睡鸳鸯。 扫除运行Scrapy爬虫程序...

yuhan336
04/02
26
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部