差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

Next revision
Previous revision
movie [2009/09/15 21:08]
130.54.130.245 作成
movie [2009/09/16 08:42] (現在)
10.249.202.212
ライン 1: ライン 1:
 ====== dataファイルによる動画の作成 ====== ====== dataファイルによる動画の作成 ======
 dataファイルをguplotで可視化し,gif形式で保存して,最後にそれらを連結させて動画をつくる. dataファイルをguplotで可視化し,gif形式で保存して,最後にそれらを連結させて動画をつくる.
-===== シェルスクリプト =====+必ずdataファイルは連番(output01.dat,​output02.dat,​....)とすること。([[http://​basewall.kuciv.kyoto-u.ac.jp/​dokuwiki/​doku.php?​id=fortran#​%E9%80%A3%E7%95%AA%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%90%8D%E3%82%92%E3%81%A4%E3%81%91%E3%82%8B|連番のファイル名をつける。]]) 
 + 
 + 
 +===== シェル ===== 
 +シェルスクリプトを適当なファイル"​hoge.sh"​に保存し,dataファイルと同じディレクトリに置く. 
 +あとは、ターミナルでシェルを実行する。 
 +<​code>​ 
 +$ sh hoge.sh 
 +</​code>​ 
 +==== シェルスクリプト ​==== 
 <code bash> <code bash>
 #!/bin/bash #!/bin/bash
ライン 20: ライン 30:
     set terminal gif     set terminal gif
     set output "​gif/​${newname}.gif"​     set output "​gif/​${newname}.gif"​
-    set xrange[$minl:$maxl]+    set xrange[$minx:$maxx]
 #    set xlabel "​location from upstream [km]" #    set xlabel "​location from upstream [km]"
     set yrange[$miny:​$maxy]     set yrange[$miny:​$maxy]
ライン 40: ライン 50:
 </​code>​ </​code>​
 与えられた引数の数だけ処理の繰り返しを行いたい場合はfor文を使用する。for文はinの後に続く引数を変数に代入しながら doとdoneの間に記述されたコマンドを繰り返し実行する。そしてinの後の引数がなくなり次第ループから抜ける。 与えられた引数の数だけ処理の繰り返しを行いたい場合はfor文を使用する。for文はinの後に続く引数を変数に代入しながら doとdoneの間に記述されたコマンドを繰り返し実行する。そしてinの後の引数がなくなり次第ループから抜ける。
-  ​<code bash>+<code bash>
  for filename in output*.dat  for filename in output*.dat
   do    do 
   ...   ...
   done   done
-  ​</​code>​+</​code>​
 変数の一部を削りたい場合,以下のパターンマッチを用いる. 変数の一部を削りたい場合,以下のパターンマッチを用いる.
 <code bash> <code bash>
ライン 54: ライン 64:
 </​code>​ </​code>​
 一番上の例では変数"​filename"​から"​output"​と"​.dat"​を削っている. 一番上の例では変数"​filename"​から"​output"​と"​.dat"​を削っている.
 +
 <code bash> <code bash>
 ## output11.dat -> 11 ##### ## output11.dat -> 11 #####
ライン 59: ライン 70:
       newname=${newname%.dat} ​       newname=${newname%.dat} ​
 </​code>​ </​code>​
 +
 以下のように囲むことによって,シェルの中でgnuplotを動かせる.末尾のGNUは必ず行頭に置かなければならない. 以下のように囲むことによって,シェルの中でgnuplotを動かせる.末尾のGNUは必ず行頭に置かなければならない.
 +
 <code bash> <code bash>
    ​gnuplot <<GNU    ​gnuplot <<GNU
ライン 66: ライン 79:
 </​code>​ </​code>​
 また,動画をつくる際,グラフの範囲を指定して置く. また,動画をつくる際,グラフの範囲を指定して置く.
 +
 +===== fortranでスクリプト作成 =====
 +シェルの文法を覚えるのが面倒なときはfortranでスクリプトを作成してもよい.
 +以下,サンプル.
 +<code fortran>
 +implicit none
 +integer i,n
 +character(len=20) giffile,​datafile
 +
 +n=100
 +do i=1,n
 +   ​write(giffile,"​(a,​i4.4,​a)"​) "​wave",​i,"​.gif"​
 +   ​write(datafile,"​(a,​i4.4,​a)"​) "​wave",​i,"​.dat"​
 +   ​write(*,'​(a)'​) "​gnuplot << EOF"
 +   ​write(*,'​(a)'​) "set terminal gif"
 +   ​write(*,'​(a)'​) "set yrange [-1:​1]"​
 +   ​write(*,'​(a,​a,​a)'​) "set output '",​trim(giffile),"'"​
 +   ​write(*,'​(a,​a,​a)'​) "plot '",​trim(datafile),"'"​
 +   ​write(*,'​(a)'​) "​EOF"​
 +end do
 +
 +write(*,'​(a)',​advance="​no"​) "​gifsicle --delay=10"​
 +do i=1,n
 +   ​write(giffile,"​(a,​i4.4,​a)"​) "​wave",​i,"​.gif"​
 +   ​write(*,'​(a,​a)',​advance="​no"​) " ",​trim(giffile)
 +end do
 +write(*,'​(a)'​) " > anime.gif"​
 +
 +end program
 +</​code>​
 +
 +使い方はコンパイルして,スクリプト作成,実行の順.上のファイルがanime.f90として
 +<code bash>
 +gfortran anime.f90
 +./a.out > anime.sh
 +sh anime.sh
 +</​code>​
 +
 ===== convertコマンドのオプション ===== ===== convertコマンドのオプション =====
 "​-delay"​オプションは次の絵を表示するための待ち時間で、単位は1/​100秒。アニメーションをループさせたい場合は "-loop 回数"​ をconvertの引数に指定する。繰り返しの場合は回数を0とする. "​-delay"​オプションは次の絵を表示するための待ち時間で、単位は1/​100秒。アニメーションをループさせたい場合は "-loop 回数"​ をconvertの引数に指定する。繰り返しの場合は回数を0とする.
ライン 71: ライン 122:
 # make movefile #### # make movefile ####
   convert -delay 10 -loop 0 gif/*.gif movie.gif   convert -delay 10 -loop 0 gif/*.gif movie.gif
 +</​code>​
 +===== gifsicle =====
 +gifファイルからgifアニメを作成
 +使い方はこんな感じ.convertと似てる.
 +<code bash>
 +gifsicle --delay 50 --loopcount 100 hoge*gif > anime.gif
 </​code>​ </​code>​
  
 +===== gifview =====
 +gifアニメを見るにはgifview.gifsicleをインストールする必要あり.
 +<code bash>
 +gifview -a anim.gif
 +</​code>​
movie.1253016514.txt.gz · 最終更新: 2009/09/15 21:08 by 130.54.130.245
CC Attribution-Noncommercial-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0