MatLab,如何预先分配帧以制作电影?

Abi*_*bid 5 matlab struct frames movie

Matlab 有以下指南来制作 avi 格式的电影。我的目标是能够通过 powerpoint 在我的演示文稿中播放视频。

nFrames = 20;
% Preallocate movie structure.
mov(1:nFrames) = struct('cdata', [],...
                    'colormap', []);

% Create movie.
Z = peaks; surf(Z); 
axis tight
set(gca,'nextplot','replacechildren');
for k = 1:nFrames 
surf(sin(2*pi*k/20)*Z,Z)
mov(k) = getframe(gcf);
end

% Create AVI file.
movie2avi(mov, 'myPeaks.avi', 'compression', 'None');
Run Code Online (Sandbox Code Playgroud)

我理解这个例子,我应该没有压缩加载到 PowerPoint 中。但是我不明白如何使用 struct 正确预分配我的内存。

Car*_* F. 1

您不需要预先分配。只需初始化mov = []. 也getframe假设gcf,所以你可以直接使用mov(k) = getframe()。我同意你想要一个未压缩的视频。Matlab 附带的编解码器非常有限。如果空间很重要,您可以使用开源工具来压缩视频。