Matlab中movie函数的使⽤
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) ],[00],'k','LineWidth',2);%绘制凸轮⽔平轴
plot([00],[-(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);
lormap);
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遍