8
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【制御工学】Pythonによる伝達関数のグラフ化

Last updated at Posted at 2020-02-24

#1.はじめに
・前回書いたqiitaのページ( https://qiita.com/sato235/items/f991411074c578d1640c ) に、波形グラフを出力して考察したら面白いのではというコメントをもらったのがきっかけで、本ページを作成。

#2.参考
#2.1.図書
[1] 南裕樹 著、オーム社、「Pythonによる制御工学入門」

#2.2.ウェブページ
a) [1]の著者サポートページ、https://y373.sakura.ne.jp/minami/pyctrl
b) 前回の自頁、https://qiita.com/sato235/items/f991411074c578d1640c
c) controlモジュールのmatlab関数のグラフ化機能、http://matsulib.hatenablog.jp/entry/2013/04/27/093008

#3. 伝達関数とグラフ化
まずモジュールのインポート。

import sympy
from control import matlab
import numpy as np
import matplotlib.pyplot as plt

伝達関数を作成

Np = [0,1]
Dp = [1,2,3]
P = matlab.tf(Np, Dp)
print(P)

伝達関数の出力

      1
-------------
s^2 + 2 s + 3

上記の伝達関数に、ステップ関数を入力した場合。

t = np.linspace(0, 3, 1000)
yout, T = matlab.step(P, t)
plt.plot(T, yout,label="test")
plt.axhline(1, color="b", linestyle="--")
plt.legend(bbox_to_anchor=(1, 0.25), loc='upper right', borderaxespad=0, fontsize=11)

step_20200224.png

伝達関数Pに、インパルス応答関数を入力した場合。

yout, T = matlab.impulse(P, t)
plt.plot(T, yout,label="test")
plt.axhline(0, color="b", linestyle="--")
plt.xlim(0, 3)
plt.legend(bbox_to_anchor=(1, 1), loc='upper right', borderaxespad=0, fontsize=11)

impulse_20200224.png

#4. 結論
・controlモジュールに、matlab計算機能があることを学んだ。
・同様に、matplotlibの描画機能もあった。
・次は、入力関数を変えて、得られる結果の考察をしたい。

8
9
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?