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)