TransferFunction#
- 类 scipy.signal.TransferFunction(*系统, **关键字参数)[源代码]#
传递函数形式的线性时不变系统类。
以连续时间传递函数 \(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: 参数
可以使用 1 个或 2 个参数实例化
TransferFunction类。以下是输入参数的数量及其解读1:
lti或dlti系统:(StateSpace、TransferFunction或ZerosPolesGain)2: array_like: (分子,分母)
- dt: float,可选
离散时间系统的采样时间(秒)。默认为 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 )
构造传递函数 \(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返回系统的采样时间,对于
lti系统,返回 None。num系统
TransferFunction的分子。poles系统的极点。
zeros系统的零点。
方法
to_ss()将系统表示转换为
StateSpace。to_tf()返回当前
TransferFunction系统的副本。to_zpk()将系统表示转换为
ZerosPolesGain。