2013年6月28日金曜日

Gnuplotを使ったボード線図の作成

こんばんは、今回は実験レポートでボード線図を書く必要があり、描き方に苦労したので記事にします。
今回はExcelではなくGnuplotを用いてグラフを作成しEPS出力する方法です。Gnuplotの基本的な使い方はこの記事では省略します、申し訳ありません。

まず最初にGnuplotを使ってコマンドを一気に通すためにスクリプトファイル(.plt)を作成する必要があります。適当なエディタを使ってもらって構いません。ただし最終的に.pltファイルの文字コードがEUCで保存できるエディタを使ってください。
さっそくGnuplotのコマンドを書いていきます。このコマンドに関しては「なみなみメモ様
www6.atwiki.jp/naminami/pages/6.html
を参考にさせて頂きました。 情報ありがとうございます。
以下の例は一次遅れ系での例です。

set terminal postscript eps enhanced
#保存名を決める
set output "graph1.eps" 
#虚数単位jの定義
j={0.0,1.0}
#伝達関数を定義(今回は一次遅れ系)
G(s)=k/(T*s+1)
#ゲインの定義
k=0.9
#時定数の定義
T=0.5
G1(x)=G(j*x)
set angles degrees
set format x "10^%01T"
#ここで横軸を対数軸に
set logscale x
set xtics nomirror
set ytics nomirror
#ここからゲイン線図の定義
set multiplot
set xlabel 'omega [rad/s]'
set size 1.0,0.6
set origin 0.0,0.4
set ylabel 'Gain [dB]'
#横軸の範囲
set xrange [0.1: 20]
#縦軸の範囲
set yrange [-25:5]
plot  20*log10(abs(G1(x))) title "douteikekka",\
"graph1.dat" using 1:2 with points pt 7 title "jikkenti"
#.datファイルから実験値の読み込み(1:2の1は周波数データ列、2は実際に得られたゲインのデータ列)
#ここから位相線図の定義
set size 1.0,0.4
set origin 0.0,0.0
set ylabel 'Phase [deg]'
set ytics 45
#縦軸の範囲
set yrange [-120:0]
plot arg(G1(x)) title "douteikekka",\
"graph1.dat" using 1:3 with points pt 7 title "jikkenti"
#1:3の1は周波数データ列、3は実際に得られた位相のデータ列
unset multiplot
set output
set terminal windows
#Mac,Linux の場合、次のように書き換え set terminal x11

pltファイルの作成
datファイルの作成


以上のソースをテキストエディタで記述し、「graph1.plt」等で保存します。文字コードをEUCにするのを忘れないようにします。

そして実験値をプロットするためのデータ群 .datファイルはExcelなどで実験データの整理をしなければなりません。datファイルはpltファイルと同じディレクトリに保存します(文字コードは「ANSI」または「Shift JIS」推奨)。
図のようにデータをエクセルで整理し、それをコピーしてテキストエディタに貼り付けてから「graph1.dat」等に名前をつけて保存するが簡単です。

ここまでの作業が終わったら、作ったpltファイルをダブルクリックするか、Gnuplotのコマンド
load ”graph1.plt”
を実行して、〜.epsのデータが出力されれば成功です(*´艸`*)
今回例で作った図は凡例が適当ですがお許し下さい。

コマンド

完成!
















0 件のコメント:

コメントを投稿