とりあえず,Rubyコード.
sinEm = 1.0
cosEm = 1.0
sin_freq = 10.0
cos_freq = 1.0
sp = 0
cp = 0
sin_phase = sp/180*Math::PI
cos_phase = cp/180*Math::PI
TIMESTOP = 5.0
Sampling = 0.01
TIME = TIMESTOP / Sampling
file = File.open("wave.txt", 'w')
gnufile = File.open("wave.dat", 'w')
file.puts 'time wave coswave sinwave'
t = 0.0
for i in 0..TIME do
coswave = cosEm*Math.cos(2*Math::PI*cos_freq*t-cos_phase)
sinwave = sinEm*Math.sin(2*Math::PI*sin_freq*t-sin_phase)
wave = coswave + sinwave
file.print t, " ", wave, " ", coswave, " ", sinwave, "\n"
gnufile.print t, " ", wave, "\n"
t += STEP
end
file.close
sinとcosで波形を作っている.生成した波形はtxtファイルとdatファイルにして出力する.
次はバッチファイル.バッチファイルの基本は一行に1つのコマンドを記述すること.
バッチファイルを実行すると上からコマンドが実行される.
if exist wave.dat (
del wave.dat
del wave.txt
)
ruby wavegen.rb
if exist wave.dat (
gnuplot -persist waveplot.plt
)
pause
if文はC言語とかの条件分岐と一緒.if文にある exist はファイルの存在確認をするもの.
一番上のif文は
1) wave.datがあれば,
2) del wave.dat を実行
3) del wave.txt を実行
当然wave.datがなければ次の ruby wavegen.rb を実行する.
ruby wavegen.rb を実行後,wave.datが存在するか確認.
gnuplot -persist waveplot.plt を実行.
waveplot.plt はgnuplotのバッチファイル.グラフのフォーマットを設定でき,このファイルをgnuplotに読み込ませれば同じグラフを何度も出すことができる.
-persist はグラフを表示させ続けるためのオプション.これがないと,ウィンドウがすぐ消える.
waveplot.pltの中身は以下のようにしている.
plot "wave.dat" with lines
これで,バッチファイルを起動すると波形を作ってgnuplotで表示してくれる.この一連の動作を自動でやってくれる.
これを応用するともっと面白いことができそう.しかも,便利!!
コマンドプロンプトに与えるコマンドはファイルとして残せるため,数の多いライブラリをリンクするときとか,大量のファイルを操作するときなんかにも使える.
バッチファイルに書けるコマンドはpathが通っていればなんでも使える.例えば,今回使った ruby コマンドとか,インストールすればUNIXコマンドも扱える.
さらに,バッチファイルは単純な構造をしているため扱いは楽.
今回はこんなところで.Makefileも一緒に勉強するといいかもw
PR