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」を用いて、無料で簡単に制御工学シミュレーションを行う方法を紹介します。

404 NOT FOUND | Python超入門速報

コメント