Main Content

movie

播放录制的影片帧

说明

示例

movie(M) 会将数组 M 中的影片帧播放一次。要从当前图窗或坐标区创建影片帧,请参阅 getframe

示例

movie(M,n) 会将影片播放 n 次。您可以将 n 指定为数值数组,其中数组的第一个元素指定播放影片的次数,其余元素构成影片中连续播放的帧列表。

示例

movie(M,n,fps) 指定影片每秒播放的帧数 fps

示例

movie(h,...) 在由图窗或坐标区对象 h 所标识的图窗或坐标区中心位置播放影片。指定图窗或坐标区可以使 MATLAB® 将影片调整到合适大小。

示例

movie(h,M,n,fps,loc) 在当前图窗中由四元素数组 loc 指定的位置播放影片。

示例

全部折叠

在一个循环中使用 getframe 函数来记录 peaks 示例函数的帧,然后将这些影片帧播放一次。

创建一个 figure 对象 h。初始化 peaks 函数 Z 的曲面图。自定义图窗坐标区。

h = figure;
Z = peaks;
surf(Z)
axis tight manual
ax = gca;
ax.NextPlot = 'replaceChildren';

预分配一个包含 40 个元素的数组 M 来存储影片帧。

loops = 40;
M(loops) = struct('cdata',[],'colormap',[]);

对于 j 的每次迭代,将函数 X 的每个图捕获为一个单独帧。将帧存储在 M 中。

将图窗对象的 'Visible' 属性设置为 'off',以在计算 X 时隐藏曲面图。

h.Visible = 'off';
for j = 1:loops
    X = sin(j*pi/10)*Z;
    surf(X,Z)
    drawnow
    M(j) = getframe;
end

将图窗的 'Visible' 属性设置为 'on',并在 M 中播放一次影片。

h.Visible = 'on';
movie(M);

Figure contains an axes object. The axes object contains an object of type surface.

计算帧时查看图窗图。播放一次影片数组。

创建一个 figure 对象 h,并初始化曲面图。自定义图窗坐标区。

h = figure;
Z = peaks;
surf(Z)
axis tight manual

Figure contains an axes object. The axes object contains an object of type surface.

ax = gca;
ax.NextPlot = 'replaceChildren';

预分配一个包含 40 个元素的数组 M 来存储影片帧。

loops = 40;
M(loops) = struct('cdata',[],'colormap',[]);

将函数 X 的每个图捕获为一个单独帧,并将其存储在 M 中。

for j = 1:loops
    X = sin(j*pi/10)*Z;
    surf(X,Z)
    drawnow
    M(j) = getframe;
end

播放一次 M 中的影片。

movie(M);

Figure contains an axes object. The axes object contains an object of type surface.

将影片数组的四个帧播放两次。

创建一个 figure 对象 h,并初始化曲面图。自定义图窗坐标区。

h = figure;
Z = peaks;
surf(Z)
axis tight manual
ax = gca;
ax.NextPlot = 'replaceChildren';

预分配一个包含 40 个元素的数组 M 来存储影片帧。

loops = 40;
M(loops) = struct('cdata',[],'colormap',[]);

将函数 X 的每个图捕获为一个单独帧,并将其存储在 M 中。

将图窗对象的 'Visible' 属性设置为 'off'

h.Visible = 'off';
for j = 1:loops
    X = sin(j*pi/10)*Z;
    surf(X,Z)
    drawnow
    M(j) = getframe;
end

将图窗的 'Visible' 属性设置为 'on'。将影片中的第一帧、第十五帧、第二十三帧和第三十六帧按连续顺序播放两次。将影片设置为每秒播放 12 帧。

h.Visible = 'on';
movie(M,[2 1 15 23 36],12);

Figure contains an axes object. The axes object contains an object of type surface.

指定每秒播放影片的帧数。

创建一个 figure 对象 h,并初始化曲面图。自定义图窗坐标区。

h = figure;
Z = peaks;
surf(Z)
axis tight manual
ax = gca;
ax.NextPlot = 'replaceChildren';

预分配一个包含 40 个元素的数组 M 来存储影片帧。

loops = 40;
M(loops) = struct('cdata',[],'colormap',[]);

将函数 X 的每个图捕获为一个单独帧,并将其存储在 M 中。

将图窗对象的 'Visible' 属性设置为 'off'

h.Visible = 'off';
for j = 1:loops
    X = sin(j*pi/10)*Z;
    surf(X,Z)
    drawnow
    M(j) = getframe;
end

将图窗的 'Visible' 属性设置为 'on'。以每秒 6 帧的速度播放一次影片。

h.Visible = 'on';
movie(M,1,6);

Figure contains an axes object. The axes object contains an object of type surface.

在图窗的左下角播放影片帧。

创建一个 figure 对象 h,并初始化曲面图。自定义图窗坐标区。

h = figure;
Z = peaks;
surf(Z)
axis tight manual
ax = gca;
ax.NextPlot = 'replaceChildren';

预分配一个包含 40 个元素的数组 M 来存储影片帧。

loops = 40;
M(loops) = struct('cdata',[],'colormap',[]);

将图窗对象的 'Visible' 属性设置为 'off'。将句柄 h 中的每个图窗捕获为一个单独帧,并将帧存储在 M 中。

h.Visible = 'off';
for j = 1:loops
    X = sin(j*pi/10)*Z;
    surf(X,Z)
    drawnow
    M(j) = getframe(h);
end

将图窗的 'Visible' 属性设置为 'on'。以每秒 12 帧的速度将 M 中的影片播放一次,并在 x 和 y 方向的偏移 30 个像素。指定句柄 h 以在当前图窗中播放影片。

h.Visible = 'on';
movie(h,M,1,12,[30 30 0 0]);

Figure contains an axes object. The axes object contains an object of type surface.

输入参数

全部折叠

影片帧的数组,指定为结构体数组,其中每个结构体包含在屏幕上显示的当前图窗或坐标区中捕获的图像数据。M 中的每行对应一个影片帧。

您可以使用 getframe 函数将图像数据捕获并存储为具有字段 cdatacolormap 的结构体。有关 cdata 图像属性和 colormap 对象的详细信息,请参阅Image 属性colormap

在图窗中播放影片的次数,指定为数值数组。如果未指定 nmovie 将只播放一次影片。如果 n 是负数,那么每个循环会先快进然后再倒播影片。

如果将 n 指定为一个向量,则第一个元素是影片播放次数,其余元素构成影片播放的帧列表。

例如,如果 M 由四个影片帧组成,并且 n 是包含元素 n = [10 4 4 2 1] 的数组,则 movieM 中的影片播放十次,该影片包含四个帧,依次是第四帧、第四帧、第二帧和第一帧。

每秒帧数,指定为数值标量。如果不指定 fpsmovie 将每秒播放 12 帧。如果您的计算机无法达到您指定的 fps 速度,它将尽可能快地播放影片。

图形对象句柄,指定为坐标区句柄或图窗句柄。h 的默认句柄是 gca,它返回当前图窗的当前坐标区或图。有关 gca 函数的详细信息,请参阅 gca

如果您想在图窗中而不是坐标区中播放影片,请将图窗句柄(即 gcf)指定为第一个参数:movie(figure_handle,...)

位置向量,指定为四元素数值数组 [x y 0 0],其中影片帧的左下角定位在数组中前两个元素指定的坐标上。loc 中指定的坐标相对于句柄 h 指定的图窗或坐标区的左下角,并且以像素为单位。movie 函数忽略 loc 的最后两个元素。

提示

  • movie 函数使用默认尺寸为 560×420 的图窗,而且不会调整图窗尺寸以适应帧偏大或偏小的影片。要适应其他框架尺寸,您可以重新调整图窗大小以适应影片。

  • 缓冲影片可将所有帧放入内存中。这样,在 Microsoft® Windows® 及其他平台上,一些很长的影片(数百帧)可能会耗尽内存,这取决于系统资源。这种情况下,可能会发出一条错误消息:

    ??? Error using ==> movie 
    Could not create movie frame

    您可以输入 Ctrl-C 终止影片。

版本历史记录

在 R2006a 之前推出

另请参阅

| |