MATLAB movie():播放动画(附带实例)
在 MATLAB 中,播放动画的函数是 movie(),该函数可以指定播放重复次数及每秒播放动画数目,它的调用格式及说明如下表所示。
如果要在图形中播放动画而不是轴,请指定图形句柄(或 GCF)作为第一个参数,形如:
【实例 1】演示曲面旋转。MATLAB 程序如下:
运行上述程序,弹出如图 1 所示的菜单与如图 2 所示的图像:

图 1 动画录制菜单

图 2 预存图片
单击“开始”按钮,执行录制动画操作,在命令行窗口中输入下面的程序:

图 3 动画演示
【实例 2】演示球体函数旋转的动画。程序步骤如下:

图 4 动画演示
调用格式 | 说明 |
---|---|
movie(M) | 使用当前轴作为默认目标,在矩阵 M 中播放动画一次 |
movie(M,n) | n 表示动画播放次数。如果 n 为负,则每个周期会先快进然后再倒播。如果 n 是向量,则第一个元素是播放电影的次数,其余元素构成了要在电影中播放的帧列表 |
movie(M,n,fps) | 以每秒 fps 帧播放电影。默认为每秒 12 帧 |
movie(h,...) | 播放以句柄 h 标识的一个或多个图形轴为中心的电影 |
movie(h,M,n,fps,loc) | loc 是一个四元素位置矢量 |
如果要在图形中播放动画而不是轴,请指定图形句柄(或 GCF)作为第一个参数,形如:
movie(figure_handle,…)另外,M 必须是动画帧的矩阵(通常来自 getframe() 函数)。
【实例 1】演示曲面旋转。MATLAB 程序如下:
>> close all % 关闭当前已打开的文件 >> clear % 清除工作区的变量 >> x = @(u,v) u.*sin(v); % 输入符号表达式x、y、z >> y = @(u,v) -u.*cos(v); >> z = @(u,v) v; >> fsurf(x,y,z,[-5 5 -5 -2],'--','EdgeColor','m') % 在指定区间绘制三维曲面,线条为洋红虚线 >> hold on % 保留当前坐标区中的绘图 >> fsurf(x,y,z,[-5 5 -2 2],'EdgeColor','none') % 在指定区间绘制三维曲面,无线条颜色 >> hold off % 关闭保持命令 >> axis off % 关闭坐标系 >> menu('录制动画:','开始','结束'); % 创建菜单
运行上述程序,弹出如图 1 所示的菜单与如图 2 所示的图像:

图 1 动画录制菜单

图 2 预存图片
单击“开始”按钮,执行录制动画操作,在命令行窗口中输入下面的程序:
>> for i = 1:20 view(90,60*(i+1)) % 改变视点 M(i) = getframe(gcf); % 保存当前绘制 end >> movie(M,2,1) % 播放画面2次,1秒1次如下图所示,为动画的 3 帧:

图 3 动画演示
【实例 2】演示球体函数旋转的动画。程序步骤如下:
>> close all % 关闭当前已打开的文件 >> clear % 清除工作区的变量 >> [X,Y,Z] = sphere; % 返回 20×20 球面的坐标 >> surf(X,Y,Z) % 创建具有实色边和实色面的三维曲面 >> axis off % 关闭坐标系 >> shading interp % 通过对颜色图索引或真彩色值进行插值改变颜色 >> for i=1:20 zoom(0.2*i+1) % 改变缩放大小 M(:,i)=getframe; % 将图形保存到M矩阵 drawnow % 更新图窗 end >> movie(M,2,5) % 播放画面2次,每秒5帧如下图所示,为动画的一帧:

图 4 动画演示