scipy.signal.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(s)=\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: arguments
这个
TransferFunction
类可以用1个或2个参数实例化。下面给出了输入参数的数量及其解释:1:
lti
或dlti
系统: (StateSpace
,TransferFunction
或ZerosPolesGain
)2:array_like:(分子,分母)
- DT:浮点,可选
采样时间 [s] 离散时间系统。默认为 None (连续时间)。必须指定为关键字参数,例如,
dt=0.1
。
参见
注意事项
更改不属于
TransferFunction
系统表示形式(如 A , B , C , D 状态空间矩阵)是非常低效的,并且可能导致数值不准确。最好先转换为特定的系统表示。例如,调用sys = sys.to_ss()
在访问/改变A、B、C、D系统矩阵之前。如果传入的(分子,分母)为
*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 )
- 属性
den
的分母
TransferFunction
系统。dt
返回系统的采样时间, None 为
lti
系统。num
的分子
TransferFunction
系统。poles
系统的两极。
zeros
系统的零。
方法:
to_ss
\()将系统表示形式转换为
StateSpace
。to_tf
\()返回当前
TransferFunction
系统。to_zpk
\()将系统表示形式转换为
ZerosPolesGain
。