首页 > 编程笔记 > MATLAB笔记 阅读:18

MATLAB movie():播放动画(附带实例)

在 MATLAB 中,播放动画的函数是 movie(),该函数可以指定播放重复次数及每秒播放动画数目,它的调用格式及说明如下表所示。

表:movie() 函数调用格式及说明
调用格式 说明
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 动画演示

相关文章