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) - 1M == len(a) - 1TransferFunction 系统从 lti ,分别在 dlti 类,具体取决于使用的系统表示形式。

参数
*system: arguments

这个 TransferFunction 类可以用1个或2个参数实例化。下面给出了输入参数的数量及其解释:

DT:浮点,可选

采样时间 [s] 离散时间系统。默认为 None (连续时间)。必须指定为关键字参数,例如, dt=0.1

注意事项

更改不属于 TransferFunction 系统表示形式(如 ABCD 状态空间矩阵)是非常低效的,并且可能导致数值不准确。最好先转换为特定的系统表示。例如,调用 sys = sys.to_ss() 在访问/改变A、B、C、D系统矩阵之前。

如果传入的(分子,分母)为 *system ,分子和分母的系数应按指数降序指定(例如 s^2 + 3s + 5z^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

返回系统的采样时间, Nonelti 系统。

num

的分子 TransferFunction 系统。

poles

系统的两极。

zeros

系统的零。

方法:

to_ss \()

将系统表示形式转换为 StateSpace

to_tf \()

返回当前 TransferFunction 系统。

to_zpk \()

将系统表示形式转换为 ZerosPolesGain