Navigation : Top/コンパクトなMovieを作る

  • 追加された行はこの色です。
  • 削除された行はこの色です。
*Movieを作る
*Movieを作る [#x740ff58]

**方法1
**方法1 [#mc661537]

一つの方法としては、MATファイル(MATLAB固有のバイナリデー 
タファイル)に落とすことです。 
figure(1);clf
for i=1:nt
    h=surf(X,Y,Z);
    M(i) = getframe(gcf);
end
movie2avi(M,'movie')

 (例) movieデータをM、カラーマップmapとしてtest.matに保存する場合 
 >> save test M map 
 として保存
**もう少し本格的 [#y060bb67]

**もう少し本格的

AVIフォーマットのファイルは,version 6.0より利用できるようになりました. 

 例) 
 ix_size_movie = 640;
 iy_size_movie = 480;

 for it=1:nt 
  if it == 1 
   figure(1); clf;
   set(gcf,'position', ... 
   [0 1024-iy_size_movie ix_size_movie iy_size_movie]); 
   [0 画面のたてサイズ-iy_size_movie ix_size_movie iy_size_movie]); 
   *** 書きたい図 ***; 
   axis([x_min x_max 0 y_max]) 
   M = moviein( nt ); 
   axis manual 
   set(gca,'nextplot','replacechildren') ; 
   %単位をpixelに
   set(0,'Units','Pixels') 
   hsize = get(gcf,'Position'); 
  end 
 
  *** 書きたい図 ***; 
  set(0,'Units','Pixels') 
  hsize = get(gcf,'Position'); 
  M(:,it) = getframe( gcf, [0 0 hsize(3) hsize(4)] ); 
 end 
 movie2avi( M, file_name ); 

movieは画面の左上からの領域を保存するので,"set(gcf,'Position',[x1 x2 y1 y2])"で場所を確定しないとちゃんと作れません. 

movie2aviで作られるmovieは非圧縮なのでtmpgenc(http://www.tmpgenc.com/)でmpegにすると1/10〜1/30のサイズになります. 

**mpegを直接作る
* movieを保存する. [#y6133b34]
    movie2avi(M,cname,'COMPRESSION','Cinepak','QUALITY',90)


*mpegを直接作る [#ca3e5525]
つぎに直接MPEGファイルにする方法ですが、MATLABでは正式にはMPEG 
ファイルをサポートしていません。しかし、開発元のftpサイトに 
MPEGフォーマットでデータの書き込 み・読み込みをするための 
ファイルが提供されていますので、そちらをダウンロードしてお 
使いください。 

URL
-ftp://ftp.mathworks.com/pub/contrib/v5/graphics/mpgread 
-ftp://ftp.mathworks.com/pub/contrib/v5/graphics/mpgwrite 
圧縮率はあまり良くない