您的位置首页百科问答

MATLAB的动画功能

MATLAB的动画功能

的有关信息介绍如下:

MATLAB的动画功能

MATLAB常用的动画指令有drawnnow指令,pause指令,rotate指令,movie指令。

drawnow指令

在MATLAB中drawnow指令的功能是暂停程序的执行并刷新图形窗口。可以利用这一功能与xdata,ydata,zdata等图形数据属性的修改,实现图形的效果。

如:

>> t=linspace(0,35,1000);

y=sin(2*t).*exp(-t/5);

h=plot(t,y);

Warning: MATLAB has disabled some advanced graphics rendering features by switching to software OpenGL. For more information, click here.

>> xlim([0,50]);

>> for i=1:200

x=i/20+t;

set(h,'xdata',x);

drawnow

end

pause指令

除了drawnow指令的动画外,还可以利用pause指令与xdata,ydata,zdata等图形属性的修改相结合制作动画。

如:

>> t=linspace(0,2*pi,361);

>> x=10*cos(t);

>> y=10*sin(t);

>> h=fill(x,y,'b');

>> xlim([-12,12]);

>> ylim([-12,12]);

>> axis square

>> hold on

>> R=linspace(10,1,100);

>> for i=1:100

x=R(i)*cos(t);

y=R(i)*sin(t);

set(h,'xdata',x);

set(h,'ydata',y);

pause(0.1)

end

rotate指令

rotate指令是旋转功能,利用这一功能和pause指令相结合制作动画。

如:时钟指针

>> t=linspace(0,(2-1/6)*pi,12);

>> x=6*cos(t);

>> y=6*sin(t);

>> h1=plot(x,y,'*r');

>> axis equal

>> xlim([-8,8]);

>> ylim([-8,8]);

>> hold on

>> h2=plot([0,5.5],[0,0]);

>> set(h2,'linewidth',4);

>> while i<=269

i=i+1;

rotate(h2,[0,0,1],1)

pause(0.1);

end

movie指令

MATLAB中提供了电影动画指令movie,利用该指令制作的动画成为电影动画。电影动画必须由很多图形帧连续播放,其制作过程为:利用指令getframe获取当前图形的帧,通过指令movie按顺序回放获取的各帧。

movie(M,n)%顺序播放帧矩阵中的各帧,你,为播放次数

getframe%获取当前图形的帧。

如:

>> t=linspace(-15,15,1000);

>> y=sin(4*t).*exp(cos(t));

>> for i=1:201

x=(i-1)/20+t;

h=plot(x,y);

xlim([-15,35]);

ylim([-4,4])

set(h,'color',rand(1,3));

set(h,'linewidth',2);

m(:,i)=getframe

end

movie(m,1)