一般来说,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 第四、以旋转颜色的方式显示
|
http://blog.sciencenet.cn/blog-598445-502092.html