我正在尝试用matlab制作一部电影。
for i=1:runs;
for k=1:NO_TIMES
B = 0;
[conf dom_size] = conf_update_massmedia(time(k),conf);
shortconf=conf(1:N);
for j=1:N;
sigma(j,1:N) = conf(1+(j-1)*N:j*N);
end
figure(1)
imagesc(sigma);
colorbar;
set(gcf,'PaperPositionMode','auto');
F(k)=getframe(gcf);
end
end
movie2avi(F,'B=0.avi','Compression','none')
所以我的问题是我只是从循环的最后一次运行中得到一部电影,我试图移动数字的代码,但似乎没有任何效果,是否有人能够提供帮助?
帕尔
答案 0 :(得分:1)
正如@tmpearce所提到的,问题是因为覆盖了F
矩阵。
我建议你:
F
矩阵。这是百万解决方案之一:
f_ind = 1; % Frame index.
F = zeros(runs * NO_TIMES, 1); % initialization of Frames matrix.
figure; % remove figure(1) from your inner loop haowever.
for i = 1:runs;
for k = 1:NO_TIMES
% ...
F(f_ind)=getframe(gcf);
f_ind = f_ind + 1;
end
end
答案 1 :(得分:0)
movie2avi有点过时,在各种操作系统上都很挣扎。更好的选择是使用VideoWriter命令:
vidObj = VideoWriter('B=0.avi');
vidObj.FrameRate=23;
open(vidObj);
for i=1:runs;
for k=1:NO_TIMES
B = 0;
[conf dom_size] = conf_update_massmedia(time(k),conf);
shortconf=conf(1:N);
for j=1:N;
sigma(j,1:N) = conf(1+(j-1)*N:j*N);
end
figure(1)
imagesc(sigma);
colorbar;
set(gcf,'PaperPositionMode','auto');
F=getframe(gcf);
writeVideo(vidObj,F);
end
end
close(vidObj);