TransferFunction#
- class scipy.signal.TransferFunction(*system, **kwargs)[原始碼]#
線性時不變系統類別,採用傳遞函數形式。
將系統表示為連續時間傳遞函數 \(H(s)=\sum_{i=0}^N b[N-i] s^i / \sum_{j=0}^M a[M-j] s^j\) 或離散時間傳遞函數 \(H(z)=\sum_{i=0}^N b[N-i] z^i / \sum_{j=0}^M a[M-j] z^j\),其中 \(b\) 是分子
num
的元素,\(a\) 是分母den
的元素,且N == len(b) - 1
,M == len(a) - 1
。TransferFunction
系統繼承了來自lti
和dlti
類別的額外功能,具體取決於使用的系統表示法。- 參數:
- *system: 參數
TransferFunction
類別可以使用 1 或 2 個參數實例化。以下說明輸入參數的數量及其解讀1:
lti
或dlti
系統:(StateSpace
,TransferFunction
或ZerosPolesGain
)2: 類陣列 (array_like): (分子, 分母)
- dt: 浮點數, 選項性
離散時間系統的取樣時間 [秒]。預設為 None (連續時間)。必須指定為關鍵字引數,例如,
dt=0.1
。
另請參閱
註解
變更不屬於
TransferFunction
系統表示法一部分的屬性(例如 A、B、C、D 狀態空間矩陣)非常沒有效率,並可能導致數值不準確。最好先轉換為特定的系統表示法。例如,在存取/變更 A、B、C、D 系統矩陣之前,先呼叫sys = sys.to_ss()
。如果為
*system
傳入 (分子, 分母),則分子和分母的係數都應以指數遞減的順序指定(例如,s^2 + 3s + 5
或z^2 + 3z + 5
將表示為[1, 3, 5]
)範例
建構傳遞函數 \(H(s) = \frac{s^2 + 3s + 3}{s^2 + 2s + 1}\)
>>> from scipy import signal
>>> num = [1, 3, 3] >>> den = [1, 2, 1]
>>> signal.TransferFunction(num, den) TransferFunctionContinuous( array([1., 3., 3.]), array([1., 2., 1.]), dt: None )
建構取樣時間為 0.1 秒的傳遞函數 \(H(z) = \frac{z^2 + 3z + 3}{z^2 + 2z + 1}\)
>>> signal.TransferFunction(num, den, dt=0.1) TransferFunctionDiscrete( array([1., 3., 3.]), array([1., 2., 1.]), dt: 0.1 )
- 屬性:
den
TransferFunction
系統的分母。dt
傳回系統的取樣時間,None 代表
lti
系統。num
TransferFunction
系統的分子。poles
系統的極點。
zeros
系統的零點。
方法
to_ss
()將系統表示法轉換為
StateSpace
。to_tf
()傳回目前
TransferFunction
系統的副本。to_zpk
()將系統表示法轉換為
ZerosPolesGain
。