相关文章推荐
开朗的皮带  ·  CUDA ...·  1 年前    · 
英俊的乌龙茶  ·  System.Data.SqlClient. ...·  1 年前    · 
博学的篮球  ·  Git push rejected ...·  1 年前    · 

一般来说,matlab制作动画有四种方式。
第一 、 以质点运动轨迹的方式显示
使用comet、comet3函数,前者是二维,后者是三维
comet(y)显示质点绕向量y,comet(x,y)显示质点绕向量y与x,comet(x,y,p),其中为轨迹尾巴的长度
以comet(x,y)为例,

显示平抛运动
vx = 40;
t = 0:0.001:10;
x = vx*t;
y = -9.8*t.^2/2;
comet(x,y)


显示导弹发射
vx = 100*cos(1/4*pi);
vy = 100*sin(1/4*pi);
t = 0:0.001:15;
x = vx*t;
y = vy*t-9.8*t.^2/2;
comet(x,y)


匀速圆周运动
sita = 0:0.0001:2*pi;
r = 10;
x=r*cos(sita);
y=r*sin(sita);
comet(x,y)


comet3与comet的用法相类似,可以在帮助文件里的例子
t = -10*pi:pi/250:10*pi;
comet3((cos(2*t).^2).*sin(t),(sin(2*t).^2).*cos(t),t)

第二、以电影播放的方式显示

保存想要产生动画的图片,存储为一系列各种类型的二维、三维图,再像放电影的方式按次序播放出来。步骤由getframe函数将当前的图片抓取为电影的画面,再由movie函数将动画显示出来。
如:
[x,y] = meshgrid([-1.05:.2:3.75]);
z = x.*exp(-x.^2-y.^2);
axis tight;
set(gca,'nextplot','replacechildren');
for j = 1:40
surf(x*sin(pi*j/100),y*sin(pi*j/100),z*sin(-pi*j/100));
m(j) = getframe
end
movie(m)
第三、以对象方式显示
设置对象的属性EraseMode,更新对象来产生新图,drawnow()函数进而覆盖旧图,从而使得图形不断发生变化。
例:
x = -pi:pi/30:pi;
h = plot(x,cos(x),'o','MarkerEdgeColor','k','MarkerFaceColor','r','MarkerSize',8,'EraseMode','Xor')
for j = 1:10000
y = 1/2*sin(3*x+0.006*j);
set(h,'ydata',y);
drawnow;
end
第四、以旋转颜色的方式显示