dlti#
- class scipy.signal.dlti(*system, dt=None)[source]#
离散时间线性时不变系统基类。
- 参数:
- *system参数
dlti类可以使用 2、3 或 4 个参数进行实例化。以下列出了参数数量及其所创建的相应离散时间子类:2:
TransferFunction: (分子, 分母)3:
ZerosPolesGain: (零点, 极点, 增益)4:
StateSpace: (A, B, C, D)
每个参数都可以是数组或序列。
- dtfloat, 可选
离散时间系统的采样时间 [s]。默认为
True(采样时间未指定)。必须作为关键字参数指定,例如dt=0.1。
- 属性:
方法
bode([w, n])计算离散时间系统的波特图幅值和相位数据。
freqresp([w, n, whole])计算离散时间系统的频率响应。
impulse([x0, t, n])返回离散时间
dlti系统的脉冲响应。output(u, t[, x0])返回离散时间系统对输入 u 的响应。
step([x0, t, n])返回离散时间
dlti系统的阶跃响应。另请参阅
附注
dlti实例不会直接存在。相反,dlti会创建其子类之一的实例:StateSpace、TransferFunction或ZerosPolesGain。更改非当前系统表示的一部分属性(例如
StateSpace系统的zeros)是非常低效的,并可能导致数值不准确。最好先转换为特定的系统表示。例如,在访问/更改零点、极点或增益之前,调用sys = sys.to_zpk()。如果将(分子,分母)作为
*system传入,则分子和分母的系数应按指数降序排列(例如,z^2 + 3z + 5应表示为[1, 3, 5])。0.18.0 版本新增。
示例
>>> from scipy import signal
>>> signal.dlti(1, 2, 3, 4) StateSpaceDiscrete( array([[1.]]), array([[2.]]), array([[3.]]), array([[4.]]), dt: True )
>>> signal.dlti(1, 2, 3, 4, dt=0.1) StateSpaceDiscrete( array([[1.]]), array([[2.]]), array([[3.]]), array([[4.]]), dt: 0.1 )
构建传递函数 \(H(z) = \frac{5(z - 1)(z - 2)}{(z - 3)(z - 4)}\),采样时间为 0.1 秒
>>> signal.dlti([1, 2], [3, 4], 5, dt=0.1) ZerosPolesGainDiscrete( array([1, 2]), array([3, 4]), 5, dt: 0.1 )
构建传递函数 \(H(z) = \frac{3z + 4}{1z + 2}\),采样时间为 0.1 秒
>>> signal.dlti([3, 4], [1, 2], dt=0.1) TransferFunctionDiscrete( array([3., 4.]), array([1., 2.]), dt: 0.1 )