Engee 文档
Notebook

创建离散时间模型

本例演示如何创建离散时间线性模型。

离散时间模型的定义

ControlSystems.jl 库允许您创建连续和离散系统。创建离散时间模型的语法与连续系统类似,但必须将采样步长(以秒为单位的采样间隔)作为函数的输入。

例如,指定离散系统的传递函数: $$ H(z) = \frac{z-1}{z^2-1.85z+0.9} $$

采样周期为$Ts = 0.1$ 。

In [ ]:
Pkg.add(["ControlSystems"])
In [ ]:
using ControlSystems

num = [1, -1];
den = [1, -1.85, 0.9];
H = tf(num,den,0.1)
Out[0]:
TransferFunction{Discrete{Float64}, ControlSystemsBase.SisoRational{Float64}}
     1.0z - 1.0
--------------------
1.0z^2 - 1.85z + 0.9

Sample Time: 0.1 (seconds)
Discrete-time transfer function model

同样,您也可以在状态空间中指定离散系统的模型: $$ x[k+1]=0.5x[k]+u[k] $$ $$ y[k]=0.2x[k] $$

采样周期为$Ts = 0.1$ 。

In [ ]:
sys = ss(.5,1,.2,0,0.1)
Out[0]:
StateSpace{Discrete{Float64}, Float64}
A = 
 0.5
B = 
 1.0
C = 
 0.2
D = 
 0.0

Sample Time: 0.1 (seconds)
Discrete-time state-space model

离散时间系统的识别

有几种方法可以确定线性模型是否离散。例如,如果模型是离散的,sys.TsH.Ts 将返回一个非零值$Ts$ 。

In [ ]:
H.Ts
Out[0]:
0.1

也可以通过过渡函数的图形来确定。系统对单步动作的响应将呈 "梯形"。

In [ ]:
using Plots

plot(step(H,8))
Out[0]:

因此,我们可以得到一个离散系统的模型。有关构建线性系统的更多信息,请参阅 Building Systems