2017-01-20 4 views
1

私はMatlabでビデオを作ろうとしていますが、私のプログラムを実行するとエラーメッセージが表示されます。 エラーは言う:cdataはループの各ステップを変更しています

Error using VideoWriter/writeVideo (line 369) 
    All 'cdata' fields in FRAMES must be the samse size 

マイコードは

v=VideoWriter('myvideo.avi','Uncompressed AVI'); 
    v.FrameRate=6; 
    open(v) 

    startdate=1; 
    enddate=10; 

    for s=startdate:enddate 
     fig=figure; 
     set(fig, 'position',[1 1 750 525]) 

     % .... (plotting of my data) 

     g(s)=getframe(fig); 
     size(g(s).cdata) 
     close(fig) 
    end 

    writeVideo(v,f) 
    close(v) 

である私はgetframepauseを試してみましたが、エラーは、ほぼ毎回発生します。誰かがこれを避ける方法を考えていますか?

+0

あなたはどのようなサイズ 'G(s)は.cdata'を見て確認しました。この構造を試してみては各繰り返しているのですか? – Suever

答えて

0

v = VideoWriter('namefile.avi','Uncompressed AVI'); 
v.FrameRate = 6; 
open(v); 

startdate=1; 
enddate=10; 

fig=figure; 
set(fig, 'position',[1 1 750 525]) 

for s=startdate:enddate 

%your plotting code like 
      %Z = randn(3); 
      %surf(Z); 

     currFrame = getframe(gcf); 
     writeVideo(v,currFrame); 
end 

close(v); 
+0

ありがとう、新しい構造はとてもうまく働きました。私はもうcdataには何の問題もありませんでした。 matlabが古い画像を描画していたので、 'getframe'の後に' clf(fig、 'reset') 'を追加するだけでした。 – birdy305

+0

@ birdy305私はビデオを録画するときに10個のプロット表示をしたくないと思っていました。この範囲では、内部ではなくループの外側に 'fig = figure'と' set'命令を書きました。それがあなたの必要を満たす場合、答えを受け入れることを検討してください。 – marcoresk

関連する問題