2013年7月3日水曜日

[追加]Gnuplotを使ったボード線図の作成

前回のGnuplotを使ったボード線図の作成では縦軸、横軸の名前、キャプションが適当でこのままでは提出できません。したがって今回はそのタイトルをTeXで流しこむ方法で綺麗にグラフを仕上げようと思います。レポートをTeXで書いている人にはあまり抵抗なくできるのでおすすめです(GnuplotのためだけにTeXを導入するのは結構大変です...)。しかし前回の作成したスクリプトファイル(.plt)を少し修正するだけです。
set terminal epslatex 10
#set terminal postscript eps enhancedをepslatex に、数字の10はフォントサイズ
#カラーで出力したい場合は一行目を"set terminal epslatex color 10"に変更
#保存名を決める
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_{i}$[rad/s]'
#書きたい名前をTeXの文法で書く
set size 1.0,0.6
set origin 0.0,0.4
set ylabel '$20\mathrm{log}_{10}|G(j\omega)|$[dB]'
#横軸の範囲
set xrange [0.1: 20]
#縦軸の範囲
set yrange [-25:5]
plot  20*log10(abs(G1(x))) title "同定結果",\
"graph1.dat" using 1:2 with points pt 7 title "実験結果"
# 日本語もOK
#.datファイルから実験値の読み込み(1:2の1は周波数データ列、2は実際に得られたゲインのデータ列)
#ここから位相線図の定義
set size 1.0,0.4
set origin 0.0,0.0
set ylabel '$\angle G(j\omega)$[deg]'
set ytics 45
# 縦軸の範囲
set yrange [-120:0]
plot arg(G1(x)) title "同定結果",\
"graph1.dat" using 1:3 with points pt 7 title "実験結果"
#1:3の1は周波数データ列、3は実際に得られた位相のデータ列
unset multiplot
set output
set terminal windows
#Mac,Linux の場合、次のように書き換え set terminal x11

修正を行ったら前回と同じように文字コードはEUCにして保存して、スクリプトを実行してください。すると今回はEPSだけでなくTeXファイルも同時に出力されたと思います。これを更に編集します。と言っても、そのTeXファイルの文頭と文末に以下の文を加えるだけです。

文頭に以下の文
\documentclass[a4paper,10pt]{article}
\usepackage{graphicx}
\pagestyle{empty}
\begin{document}
\begin{figure}

文末に以下の文
\end{figure}
\end{document}

文頭の記述
文末の記述
これで保存してください。そしてコマンドプロンプトで
latexmk figure1.tex
dvips figure1.dvi
ps2epsi figure1.ps figure.eps

これらのコマンドを順に叩くだけです。最終的に"figure.eps"が出力されたと思います。

プロット結果
特にボード線図の縦軸のlogや角度記号はTeXで頑張ったかいあって綺麗に出てます(^O^)/今まではグラフの要素だけ作ってinkscapeで一生懸命、日本語や数式を打っていましたが、この方法だとちょっとだけ楽ができます。

最後に今回、latexmkをあえて使ったのはlatexやplatexなどではtexのコンパイルの時点で

! Missing $ inserted.
<inserted text>
        $
l.118    \gplbacktext

のようなエラーが出てしまいdviファイルが出力出来ませんでした。ボード線図自体のスクリプトも結構無理やりな感じがあるのでそれが何か悪さをしているのかもしれません。しかしlatexmkだとエラーは同様に出てしまいますが、dviファイルはそれでも出力してくれたので、暫定的にそうしています。latexmkはWindowsならW32TeX、MacならMacTeXでTeXの環境を入れた人なら一緒に入ってるような気がします。Windowsに関してはPerlを入れなければコマンドが通りませんでした。Perlの環境はStrawberry Perlで動作を確認しました。
http://strawberryperl.com/





0 件のコメント:

コメントを投稿