Pythonモジュール「SciPy」を用いて、伝達関数と状態方程式を相互変換する方法をソースコード付きでまとめました。
伝達関数 → 状態方程式
Pythonモジュール「SciPy」ではtt2ssメソッドで伝達関数G(s)を状態方程式に変換できます。
※Matlabとほとんど同じなのでわかりやすいです。
今回は、以下の伝達関数を状態方程式に変換してみます。
(1)
(2)
– | 参考ページ |
---|---|
公式 | scipy.signal.tf2ssリファレンス |
原理 | 【制御理論】状態方程式と伝達関数の相互変換 |
ソースコード
サンプルプログラムのソースコードです。
# -*- coding: utf-8 -*- from scipy.signal import tf2ss # 伝達関数の分母・分子の係数 num = [1, 3, 1] # 分母係数 den = [1, 5, 1] # 分子係数 # 伝達関数 → 状態方程式 A, B, C, D = tf2ss(num, den) # 状態方程式の各行列 print('A=', A) print('B=', B) print('C=', C) print('D=', D)
■実行結果
A= [[-5. -1.] [ 1. 0.]] B= [[ 1.] [ 0.]] C= [[-2. 0.]] D= [[ 1.]]
状態方程式 → 伝達関数
Pythonモジュール「SciPy」ではss2tfメソッドで状態方程式を伝達関数G(s)に変換できます。
# -*- coding: utf-8 -*- from scipy.signal import ss2tf # 伝達関数の分母・分子の係数 A = [[-5, -1], [1, 0]] B = [[1], [0]] C = [[-2, 0]] D = 1 # 伝達関数 → 状態方程式 G = ss2tf(A, B, C, D) # 状態方程式の各行列 print('G(s)=', G)
G(s)= (array([[1, 3, 1]]), array([ 1., 5., 1.]))
関連ページ
【Python】制御工学シミュレーション入門
プログラミング言語「Python」を用いて、無料で簡単に制御工学シミュレーションを行う方法を紹介します。
401 Unauthorized
コメント