matlab有三种方法来创建动画:
①以质点运动轨迹的方式来创建动画
theta=0:0.001:2*pi;
%定义圆的半径
r=10;
%生成圆上各点的横纵坐标
x=r*cos(theta);
y=r*sin(theta);
comet(x,y);
生成的动画效果如下 (其中的某一步)
最终结果如下
comet(x,y)
显示 y
对 x
的彗星图。
comet3与comet的用法相似;
②在绘图过程中不断抓取一系列的图片并保存,然后再在后台连续播放这些图片,这种方法称为“影片模式”
使用该模式生成动画,需要以下两个步骤
a.调用getframe函数抓取界面并保存为图像
b.调用movie函数连续播放保存的图像
clc;clear;
figure(1);
x=0:pi/50:2*pi;
y=sin(x);
h=plot(x,y);
%保存坐标值,使得所有的帧都显示在同一个坐标轴中
axesValue=axis;
%创建动画
for ii=1:10
%在坐标轴中绘制曲线
for jj=1:length(x)*ii/10
set(h,'xdata',x(1:jj),'ydata',y(1:jj),'color','r');
axis(axesValue);
end
%抓取界面图像,保存到矩阵A
A(ii)=getframe;
end
%连续播放矩阵A中的图像两次
movie(A,2);
③擦除模式
使用擦除模式来生成动画需要以下步骤
a.产生一个图形对象,将其EraseMode属性设置为xor;
b.在循环中改变对象的坐标值(XData,YData,ZData属性值),重新绘制图形
每次循环都调用drawnow命令刷新界面
figure(1);
x=0:pi/50:2*pi;
y=sin(x);
plot(x,y);
%产生一个红点在曲线上移动
h=line(0,0,'color','r','marker','.','markersize',40,'erasemode','xor');
%取得坐标轴的取值范围
axesValue=axis;
%创建动画,在曲线上移动红点
for jj=1:length(x)
set(h,'xdata',x(jj),'ydata',y(jj),'color','r');
%设置坐标轴的范围,以使所有图形的大小相同
axis(axesValue);
pause(0.2);
drawnow;
end