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 系統從 ltidlti 類別繼承額外功能,取決於使用的系統表示法。

參數:
*system: 參數

StateSpace 類別可以使用 1 或 4 個參數實例化。以下給出輸入參數的數量及其解釋

dt: float, 選項性

離散時間系統的取樣時間 [s]。預設為 None (連續時間)。必須指定為關鍵字參數,例如,dt=0.1

注意

更改不屬於 StateSpace 系統表示法一部分的屬性值(例如 zerospoles)非常沒有效率,並可能導致數值不準確。最好先轉換為特定的系統表示法。例如,在存取/更改零點、極點或增益之前,先呼叫 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