gnuplot for

gnuplot v4.6がでて半年くらいたつが、新機能まとめ的な記事を見掛けないので書いてみる。 今回はfor文について。 このブログfor文ばっかだな。 徐に例をあげてみる
do for [j=0:4]{
    title sprintf("%dth data",j)
    plot for [i=0:5] sprintf("data%d",j) index i title sprintf("%dth",i)
    pause -1
}
実際に使っているのを少し改変してみた。 dataファイルdata0,data1,data2,data3,data4があり、 その各々に5ブロック分のデータが書いてある様な状況である。 偏微分方程式の時間発展とか計算する時によくある状況である。 順に説明していこう

sprintf

gnuplot中で数値を文字列に変換したいことはままある。 例えば上記の様にファイル名を生成したい時などである。 sprintfはCの関数と同様であり、char*に書きこむ変わりにその場に展開する。つまり
 plot sprintf("data%d",1) 
 plot "data1" 
と同じ挙動を示す。

plot for

これはv4.4で追加された機能だと思う(未確認、v4.4では動作確認済み)
 plot for [i=0:2] x**i 
のように書くと
 plot x**0 , x**1 , x**2 
と同じ挙動が得られる。

do for

これはv4.6での新機能である。 もう特に説明の必要はないと思うが{}でくくられた命令をループ実行する。 {}を使った同様の構文がif/whileでも使えるらしい。 この辺りは次回に