MATLAB如何制作动画(动态图形演示movie)
有时我们需要用MATLAB作出的图片有动态的效果,比如下图,我想让这个图案有动态的起伏的展示,或者某种仿真过程,我想动态地展示,怎么办呢?
操作方法
- 01
首先,我这里举例代码如下: x=-8:0.5:8; [XX,YY]=meshgrid(x); r=sqrt(XX.^2+YY.^2)+eps; Z=sin(r)./r; surf(Z); 生成了一幅静态的surf图片,XX,YY由meshgrid生成。
- 02
下面输入 theAxes=axis;, 右侧可以看到,theAxes=[0,40,0,40,-0.5,1],这是surf函数生成的,因为上面绘制的surf没有使用surf(XX,YY,Z)所以坐标范围不同,但是无论什么坐标范围,这里都先取出来,存到一个变量中,后面备用。
- 03
fmat=moviein(20); 将fmat保存为一个moviein结构体,20表示动画有20帧。
- 04
输入: for j=1:20; surf(sin(2*pi*j/20)*Z,Z) axis(theAxes) fmat(:,j)=getframe; end 这里就是分别画每一帧的图像,此处我们的surf是分20份来画,坐标轴统一为之前的保存的坐标轴,把moviein结构体fmat的取为getframe,如图。
- 05
movie(fmat,10);就是动画放10遍。
- 06
全代码如下: x=-8:0.5:8; [XX,YY]=meshgrid(x); r=sqrt(XX.^2+YY.^2)+eps; Z=sin(r)./r; surf(Z); theAxes=axis; fmat=moviein(20); for j=1:20; surf(sin(2*pi*j/20)*Z,Z) axis(theAxes) fmat(:,j)=getframe; end movie(fmat,10)