传递函数#
- 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: 类数组: (分子, 分母)
- dt: 浮点型, 可选
离散时间系统的采样时间 [s]。默认为 None(连续时间)。必须指定为关键字参数,例如,
dt=0.1
。
- 属性:
den
TransferFunction
系统的分母。dt
返回系统的采样时间,对于
lti
系统为 None。num
TransferFunction
系统的分子。poles
系统的极点。
zeros
系统的零点。
方法
to_ss
()将系统表示形式转换为
StateSpace
。to_tf
()返回当前
TransferFunction
系统的副本。to_zpk
()将系统表示形式转换为
ZerosPolesGain
。另请参阅
备注
更改不属于
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 )
构建传递函数 \(H(z) = \frac{z^2 + 3z + 3}{z^2 + 2z + 1}\),采样时间为 0.1 秒
>>> signal.TransferFunction(num, den, dt=0.1) TransferFunctionDiscrete( array([1., 3., 3.]), array([1., 2., 1.]), dt: 0.1 )