scipy.signal.
StateSpace#
- class scipy.signal.StateSpace(*system, **kwargs)[原始碼]#
狀態空間形式的線性時不變系統。
將系統表示為連續時間、一階微分方程式 \(\dot{x} = A x + B u\) 或離散時間差分方程式 \(x[k+1] = A x[k] + B u[k]\)。
StateSpace
系統從lti
或dlti
類別繼承額外功能,取決於使用的系統表示法。- 參數:
- *system: 參數
StateSpace
類別可以使用 1 或 4 個參數實例化。以下給出輸入參數的數量及其解釋1:
lti
或dlti
系統: (StateSpace
,TransferFunction
或ZerosPolesGain
)4: array_like: (A, B, C, D)
- dt: float, 選項性
離散時間系統的取樣時間 [s]。預設為 None (連續時間)。必須指定為關鍵字參數,例如,
dt=0.1
。
另請參閱
注意
更改不屬於
StateSpace
系統表示法一部分的屬性值(例如zeros
或poles
)非常沒有效率,並可能導致數值不準確。最好先轉換為特定的系統表示法。例如,在存取/更改零點、極點或增益之前,先呼叫sys = sys.to_zpk()
。範例
>>> from scipy import signal >>> import numpy as np >>> a = np.array([[0, 1], [0, 0]]) >>> b = np.array([[0], [1]]) >>> c = np.array([[1, 0]]) >>> d = np.array([[0]])
>>> sys = signal.StateSpace(a, b, c, d) >>> print(sys) StateSpaceContinuous( array([[0, 1], [0, 0]]), array([[0], [1]]), array([[1, 0]]), array([[0]]), dt: None )
>>> sys.to_discrete(0.1) StateSpaceDiscrete( array([[1. , 0.1], [0. , 1. ]]), array([[0.005], [0.1 ]]), array([[1, 0]]), array([[0]]), dt: 0.1 )
>>> a = np.array([[1, 0.1], [0, 1]]) >>> b = np.array([[0.005], [0.1]])
>>> signal.StateSpace(a, b, c, d, dt=0.1) StateSpaceDiscrete( array([[1. , 0.1], [0. , 1. ]]), array([[0.005], [0.1 ]]), array([[1, 0]]), array([[0]]), dt: 0.1 )
- 屬性:
A
StateSpace
系統的狀態矩陣。B
StateSpace
系統的輸入矩陣。C
StateSpace
系統的輸出矩陣。D
StateSpace
系統的饋通矩陣。dt
傳回系統的取樣時間,None 代表
lti
系統。poles
系統的極點。
zeros
系統的零點。
方法
__mul__
(other)後乘另一個系統或純量
to_ss
()傳回目前
StateSpace
系統的副本。to_tf
(**kwargs)將系統表示式轉換為
TransferFunction
。to_zpk
(**kwargs)將系統表示式轉換為
ZerosPolesGain
。