【Python/SciPy】ボード線図(ゲイン・位相)を描く

Pythonでボード線図(ゲイン・位相)を描く方法について入門者向けにまとめました。

ボード線図(ゲイン・位相)を描く

Pythonでは、scipyモジュールの以下のメソッドを使うことで簡単にボード線図を求めることができます。

書式 説明
G = signal.lti(num, den) 分子係数num、分母の係数denの伝達関数Gを定義します。
w, mag, phase = signal.bode(G) 伝達関数Gのボード線図を計算します。(各周波数w、ゲインmag、位相phase)

サンプルコード

サンプルプログラムのソースコードです。
このサンプルでは、次の一次遅れのボード線図を求めます。

(1)   \begin{eqnarray*} G(s)=\frac{1}{1+s} \end{eqnarray*}

# -*- coding: utf-8 -*-
from scipy import signal
import matplotlib.pyplot as plt

# 伝達関数の定義
num = [1] # 分子の係数
den = [1, 1] # 分母の係数
G = signal.lti(num, den)

# ボード線図の計算
w, mag, phase = signal.bode(G)

# ゲイン線図の描画
plt.subplot(2, 1, 1)
plt.semilogx(w, mag)
plt.ylabel("Gain[dB]")
plt.grid()

# 位相線図の描画
plt.subplot(2, 1, 2)
plt.semilogx(w, phase)
plt.xlabel("w[rad/sec]")
plt.ylabel("Phase[deg]")
plt.grid()
plt.show()

実行結果

サンプルプログラムの実行結果です。

関連記事
1 Pythonで制御工学シミュレーション
2 Python入門 サンプル集

コメント