2013-06-01 3 views
0

matlab에서 동영상을 만들려고합니다. 할 수있는 사람이, 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') 

그래서 내 문제는 루프의 마지막 실행에서 영화를 얻을 내가, 내가 주위에 그림에 대한 코드를 이동하는 시도이다,하지만 아무것도 작동하는 것 같다 없다 도움? @tmpearce 언급했듯이

+2

'F (K) = getframe (GCF)는'외측 루프를 매번 'F' 덮어 얻는다 즉, 내부 루프 내부 때문이다 : 나은 옵션은 VideoWriter 명령을 사용한다. – tmpearce

답변

0

movie2avi는 다양한 운영 체제에 약간 오래된 투쟁이다.

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); 
1

는 문제는 행렬 F 덮어 쓰기이다. 당신의 F 매트릭스를 초기화

  1. :

    나는 당신을 제안한다.

  2. 항상 읽을 수 있도록 코드를 들여 쓰십시오 (예 : here 참조).

이 백만 솔루션 중 하나입니다

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