我自己在学习matlab,我用matlab制作了一个动画图;现在我想把它保存为视频文件。你能告诉我如何在matlab中将我的动画转换成视频文件。下面是我的代码
x=[1:2];
for i=1:25,
m=randi([3,5]);
n=randi([3,5]);
y=[m n];
bar(x,y)
axis equal
A(i) = getframe;
end
matlab 版本 7.8 R2009a
我自己在学习matlab,我用matlab制作了一个动画图;现在我想把它保存为视频文件。你能告诉我如何在matlab中将我的动画转换成视频文件。下面是我的代码
x=[1:2];
for i=1:25,
m=randi([3,5]);
n=randi([3,5]);
y=[m n];
bar(x,y)
axis equal
A(i) = getframe;
end
matlab 版本 7.8 R2009a
使用 avifile:
aviobj = avifile('example.avi','compression','None');
x=[1:2];
for i=1:25,
m=randi([3,5]);
n=randi([3,5]);
y=[m n];
bar(x,y)
axis equal
aviobj = addframe(aviobj,gcf);
drawnow
end
viobj = close(aviobj)
如果 Matlab 的 avifile 不起作用(它可能与 64 位操作系统的编解码器有问题),然后使用 mmwrite。 http://www.mathworks.com/matlabcentral/fileexchange/15881-mmwrite
这很简单,而且有效。我用它来创建 *.wmv 文件,只需:
mmwrite(filename, frames);
编辑:代码示例
% set params
fps = 25;
n_samples = 5 * fps;
filename = 'd:/rand.wmv';
% allocate frames struct
fig = figure;
f = getframe(fig);
mov = struct('frames', repmat(f, n_samples, 1), ...
'times', (1 : n_samples)' / fps, ...
'width', size(f.cdata, 2), ...
'height', size(f.cdata, 1));
% generate frames
for k = 1 : n_samples
imagesc(rand(100), [0, 1]);
drawnow;
mov.frames(k) = getframe(fig);
end
% save (assuming mmwrite.m is in the path)
mmwrite(filename, mov);