数字系统,之前用差分方程或 Z 变换传递函数表示,也可以使用状态空间表示。处理模拟系统的所有相同技术都可以应用于数字系统,只是稍作修改。
对于数字系统,我们可以使用离散数据集编写类似的方程
![{\displaystyle x[k+1]=Ax[k]+Bu[k]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/968e943803299b5d109c4f8c3c9f30267d4253a6)
![{\displaystyle y[k]=Cx[k]+Du[k]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4f519a3e55979d6f94be1a47fcec83f3b7c6d06f)
如果我们有一个连续时间状态方程

我们可以推导出上面讨论的这个方程的数字版本。我们对我们的方程进行拉普拉斯变换

现在,取拉普拉斯逆变换,得到我们的时域系统,记住 (sI - A) 项的拉普拉斯逆变换是我们的状态转移矩阵 Φ

现在,我们在输入上应用零阶保持,使系统数字化。请注意,我们将起始时间 t0 = kT 设置为,因为我们只对系统在单个采样周期内的行为感兴趣


我们能够从积分中移除 u(kT),因为它不依赖于 τ。我们现在定义一个新的函数 Γ,如下

将此新表达式代入我们的方程,并令 *t = (k + 1)T*,得到

现在 Φ(T) 和 Γ(T) 是常数矩阵,我们可以用新的名称来表示它们。下标 *d* 表示它们是系数矩阵的数字版本


我们可以在我们的状态方程中使用这些值,并转换为我们的方括号表示法
![{\displaystyle x[k+1]=A_{d}x[k]+B_{d}u[k]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/26016d81d915f56b27dbd4cd0d7cfe6ce4b90df0)
表现类似的连续系统和离散系统可以通过一组关系联系起来。毫不奇怪,离散系统和连续系统将具有不同的特性和不同的系数矩阵。如果我们认为离散系统与连续系统相同,只是它以采样时间 T 进行采样,那么以下关系将成立。将模拟系统转换为数字硬件使用的过程称为离散化。我们已经对离散化做了简单的介绍,但我们将在本章中更详细地讨论它。
离散化中最重要的是从连续时间对应物计算相关的系数矩阵。如果我们有连续系统 *(A,B,C,D)*,我们可以使用关系 *t = kT* 将状态空间解转换为采样系统

![{\displaystyle x[k]=e^{AkT}x[0]+\int _{0}^{kT}e^{A(kT-\tau )}Bu(\tau )d\tau }](https://wikimedia.org/api/rest_v1/media/math/render/svg/0290cc2dd22a4d631c5ffb7823e1c121eb936743)
现在,如果我们想分析 *k+1* 项,我们可以再次求解方程
![{\displaystyle x[k+1]=e^{A(k+1)T}x[0]+\int _{0}^{(k+1)T}e^{A((k+1)T-\tau )}Bu(\tau )d\tau }](https://wikimedia.org/api/rest_v1/media/math/render/svg/994ce6bfa0f69053e517040b1b49e36dca2bf45f)
分离变量,并将积分分成两部分,得到
![{\displaystyle x[k+1]=e^{AT}e^{AkT}x[0]+\int _{0}^{kT}e^{AT}e^{A(kT-\tau )}Bu(\tau )d\tau +\int _{kT}^{(k+1)T}e^{A(kT+T-\tau )}Bu(\tau )d\tau }](https://wikimedia.org/api/rest_v1/media/math/render/svg/78a27e93b69a568932afcbe78c7b92ceffd24575)
如果我们代入一个新的变量β = (k + 1)T + τ,并且我们看到以下关系
![{\displaystyle e^{AkT}x[0]=x[k]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/57de715a88e4511103163170154c005c2b07ca74)
我们得到最终结果
![{\displaystyle x[k+1]=e^{AT}x[k]+\left(\int _{0}^{T}e^{A\alpha }d\alpha \right)Bu[k]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c0b306d52dc9f7484b3eddeab936b347450df49b)
将此方程与我们的常规解进行比较,我们得到了一组将连续时间系统转换为离散时间系统的关系。这里,我们将使用“d”下标来表示离散系统的系统矩阵,并将使用“c”下标来表示连续系统的系统矩阵。
矩阵维度
A: p × p
B: p × q
C: r × p
D: r × q
|
|
|
|
如果 Ac 矩阵是非奇异的,那么我们可以找到它的逆矩阵,并将 Bd 定义为

离散矩阵和连续矩阵之间的差异是由于描述我们系统的基础方程不同。连续时间系统由线性微分方程表示,而数字系统由差分方程描述。差分方程中的高阶项是信号的延迟副本,而微分方程中的高阶项是模拟信号的导数。
如果我们有一个复杂的模拟系统,并且我们想在数字计算机中实现该系统,我们可以使用上述变换使我们的矩阵符合新的范式。
由于离散系统的系数矩阵的计算方式与连续时间系数矩阵不同,并且由于这些矩阵在技术上代表不同的内容,因此在文献中使用不同的变量来表示这些矩阵并不罕见。例如,以下变量经常用作A和B的替代


这些替换将为我们提供由有序四元组(Ω, R, C, D)定义的系统,用于表示我们的方程。
为了符号方便,我们将在本书的其余部分使用字母A和B来表示这些矩阵。
我们可以为离散时间差分方程找到一个通用的时不变解。让我们从建立一个模式开始。我们知道离散状态方程
![{\displaystyle x[n+1]=Ax[n]+Bu[n]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/6ff7ef6d6d0d9cf66bd77f029c79ae00aacd2fe0)
从时间n = 0开始,我们可以开始创建一个模式
![{\displaystyle x[1]=Ax[0]+Bu[0]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b13570ff73e4dcab05275a001560428ac046f7cf)
![{\displaystyle x[2]=Ax[1]+Bu[1]=A^{2}x[0]+ABu[0]+Bu[1]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/aef6d8501f685e4229f05dc873b311321455754e)
![{\displaystyle x[3]=Ax[2]+Bu[2]=A^{3}x[0]+A^{2}Bu[0]+ABu[1]+Bu[2]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/a9b4ccefe6ab3870c5c6c73a1fb16b8a39a1d395)
经过一些代数技巧,我们可以将这个模式简化为一个方程式
![{\displaystyle x[n]=A^{n}x[n_{0}]+\sum _{m=0}^{n-1}A^{n-1-m}Bu[m]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/c2c8499f4dbe367155c362de8c6869b58d17508b)
将此结果代入输出方程,得到
![{\displaystyle y[n]=CA^{n}x[n_{0}]+\sum _{m=0}^{n-1}CA^{n-1-m}Bu[m]+Du[n]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/39753b5bea5015c84fd37e76f1dd23ce5907a8e0)
如果系统是时变的,我们有一个类似于连续时间情况的一般解
![{\displaystyle x[n]=\phi [n,n_{0}]x[n_{0}]+\sum _{m=n_{0}}^{n-1}\phi [n,m+1]B[m]u[m]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/d6cc4013c8a7b8efc2ec527cf56a479cb0bd542c)
![{\displaystyle y[n]=C[n]\phi [n,n_{0}]x[n_{0}]+C[n]\sum _{m=n_{0}}^{n-1}\phi [n,m+1]B[m]u[m]+D[n]u[n]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ab9fe470f56a69b3ce90c24abc5b5a7417a07e00)
其中 φ,状态转移矩阵,与连续情况下的状态转移矩阵定义类似。但是,离散时间中的一些属性是不同的。例如,状态转移矩阵的逆不需要存在,在许多系统中它是不存在的。
离散时间状态转移矩阵是以下方程的唯一解
![{\displaystyle \phi [k+1,k_{0}]=A[k]\phi [k,k_{0}]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/8978a0e548bc699235f2a84022527afb7e931e12)
其中必须满足以下限制
![{\displaystyle \phi [k_{0},k_{0}]=I}](https://wikimedia.org/api/rest_v1/media/math/render/svg/bb91cf3310196bf8196363d58b0381a1f6b91aa1)
根据此定义,一个显而易见的计算此状态转移矩阵的方法出现了
![{\displaystyle \phi [k,k_{0}]=A[k-1]A[k-2]A[k-3]\cdots A[k_{0}]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/489960ef4b593f862d1992bec88965b65bed22d7)
或者,
![{\displaystyle \phi [k,k_{0}]=\prod _{m=1}^{k-k_{0}}A[k-m]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2f2c6298256e86709427e5220ca7661f3a2ef975)
MATLAB 是一款计算机程序,因此使用数字方法计算所有系统。MATLAB 函数 lsim 用于模拟具有指定输入的连续系统。此函数通过调用 c2d 函数来工作,c2d 函数将系统 (A, B, C, D) 转换为等效的离散系统。一旦系统模型被离散化,函数将控制权传递给 dlsim 函数,该函数用于模拟具有指定输入的离散时间系统。
因此,像 MATLAB 这样的仿真程序会受到离散化过程相关的舍入误差的影响。