はじめに
※ MATLAB、Python、Scilab比較ページはこちら
https://www.simulationroom999.com/blog/comparison-of-matlab-python-scilab/
Pythonに於ける、伝達関数使用方法を備忘録として残す。
というよりも、Pythonでこれができることをこの記事書いているときに知った。
controlというパッケージを使用することで実現可能。
Pythonだけで自分の業務のほとんどができる可能性が出てきた。
使用Library
Python Control Systems Libraryを使用。
https://python-control.readthedocs.io/en/0.8.3/
Documentation page not found
- Read the Docs
一次遅れ系
>>> import sympy
>>> from control import matlab
>>> import numpy as np
>>> import matplotlib.pyplot as plt
>>> Np = [0,1] # 伝達関数分子係数
>>> Dp = [0,1,1] # 伝達関数分母係数
>>> G = matlab.tf(Np, Dp) # 伝達関数生成
>>> G
1
-----
s + 1
>>> t = np.linspace(0, 10, 1000) # 時間(横)軸
>>> u = np.zeros(1000); # 入力信号生成
>>> u[500:1000]=1 # 5秒後に0から1へ
>>> y, T,x = matlab.lsim(G, u, t) # step応答
>>> plt.plot(T,y)
>>> plt.axhline(1,linestyle = "--", color = "blue")
>>> plt.axvline(5,linestyle = "--", color = "blue")
>>> plt.show()
step入力そのものを実現するstep関数もある。
しかし、lsimの方が自由度があるため、こちらを使用。
まとめ
controlパッケージを用いることでMATLABのcontrol sysytem toolboxに近いことが出来る。
- 伝達関数
- 周波数応答
- 安定判別
- 時間応答
- PID制御
Pythonをガッツリ学習したい場合はオンライン学習サービスなどもあります。
オンラインPython学習サービス「PyQ(パイキュー)」公式ページ
ポイント
- 環境構築不要
- ブラウザだけで学習を始められる。
- 申し込みから4ステップで登録を完了
- 申し込み完了待ちとかない。すぐ始められる。
- 1,000問以上の実践的な課題がある。
※ MATLAB、Python、Scilab比較ページはこちら
コメント