在本章中,我们将介绍理想采样器和星形变换 。首先,我们需要介绍(或回顾)几何级数 的无穷和。后面在计算星形变换时,这些和的结果将非常有用。
考虑一个工作方式如下:每隔T 秒,采样器读取输入信号在那一刻的当前值。然后采样器将该值保持在输出端T 秒,然后再进行下一次采样。我们有一个通用的系统输入f(t) ,并且我们的采样输出将记为f*(t) 。然后我们可以得出这两个信号之间的以下关系
f ∗ ( t ) = f ( 0 ) ( u ( t − 0 ) − u ( t − T ) ) + f ( T ) ( u ( t − T ) − u ( t − 2 T ) ) + ⋯ + f ( n T ) ( u ( t − n T ) − u ( t − ( n + 1 ) T ) ) + ⋯ {\displaystyle f^{\,*}(t)=f(0){\big (}\mathrm {u} (t\,-\,0)\,-\,\mathrm {u} (t\,-\,T){\big )}\,+\,f(T){\big (}\mathrm {u} (t\,-\,T)\,-\,\mathrm {u} (t\,-\,2T){\big )}\,+\;\cdots \;+\,f(nT){\big (}\mathrm {u} (t\,-\,nT)\,-\,\mathrm {u} (t\,-\,(n\,+\,1)T){\big )}\,+\;\cdots }
请注意,f * 在时间t = 1.5 T 的值与时间t = T 的值相同。这种关系对任何分数值都有效。
对这个无穷序列进行拉普拉斯变换将得到一个特殊的结果,称为星形变换 。星形变换在某些文本中也称为“星号变换”。
在我们谈论星形变换甚至 Z 变换之前,回顾求解无穷级数背后的数学背景对我们很有用。具体来说,由于这些变换的性质,我们将研究求解几何级数 之和的方法。
几何级数是指数递增值的总和,如下所示
∑ k = 0 n a r k = a r 0 + a r 1 + a r 2 + a r 3 + ⋯ + a r n {\displaystyle \sum _{k=0}^{n}ar^{k}=ar^{0}+ar^{1}+ar^{2}+ar^{3}+\cdots +ar^{n}\,}
在上面的等式中,请注意级数中的每一项都有一个系数值 a。如果结果等式更容易处理,我们可以选择将该系数分解出来
a ∑ k = 0 n r k = a ( r 0 + r 1 + r 2 + r 3 + ⋯ + r n ) {\displaystyle a\sum _{k=0}^{n}r^{k}=a\left(r^{0}+r^{1}+r^{2}+r^{3}+\cdots +r^{n}\,\right)}
一旦我们得到了其中任何一种格式的无穷级数,我们就可以方便地使用以下等式来求解该级数的总和
a ∑ k = 0 n r k = a 1 − r n + 1 1 − r {\displaystyle a\sum _{k=0}^{n}r^{k}=a{\frac {1-r^{n+1}}{1-r}}}
假设我们从一个非零的数字开始我们的级数。假设例如,我们从n = 1 或n = 100 开始我们的级数。让我们看看
∑ k = m n a r k = a r m + a r m + 1 + a r m + 2 + a r m + 3 + ⋯ + a r n {\displaystyle \sum _{k=m}^{n}ar^{k}=ar^{m}+ar^{m+1}+ar^{m+2}+ar^{m+3}+\cdots +ar^{n}\,}
我们可以将求和推广到以下级数:
∑ k = m n a r k = a ( r m − r n + 1 ) 1 − r {\displaystyle \sum _{k=m}^{n}ar^{k}={\frac {a(r^{m}-r^{n+1})}{1-r}}}
有了这个结果,现在我们需要考虑如何使这个级数收敛。在上式中,我们知道 n 趋于无穷大(因为这是一个 *无限和*)。因此,当我们试图使这个级数收敛时,任何包含变量 n 的项都是一个令人担忧的问题。如果我们仔细观察上面的等式,我们会发现整个结果中只有一个包含 *n* 的项,由此,我们可以设置一个基本不等式来控制等比级数。
r n + 1 < ∞ {\displaystyle r^{n+1}<\infty }
为了满足这个等式,我们必须满足以下条件
r ≤ 1 {\displaystyle r\leq 1}
因此,我们得出最终结果:**等比级数收敛当且仅当 *r* 的值小于 1。**
**星形变换** 定义如下:
F ∗ ( s ) = L ∗ [ f ( t ) ] = ∑ k = 0 ∞ f ( k T ) e − s k T {\displaystyle F^{*}(s)={\mathcal {L}}^{*}[f(t)]=\sum _{k=0}^{\infty }f(kT)e^{-skT}}
星形变换取决于采样时间 *T*,并且对于同一个信号而言,其在不同采样频率下会有所不同。由于星形变换定义为一个无穷级数,需要注意的是,一些输入到星形变换中的信号不会收敛,因此一些函数没有有效的星形变换。此外,需要注意的是,星形变换可能只在特定的 **收敛区域** 内有效。我们将在讨论 Z 变换时进一步探讨这个主题。
拉普拉斯变换和星形变换显然是相关的,因为我们通过对时域信号应用拉普拉斯变换得到了星形变换。然而,在两者之间进行转换的方法可能有点复杂。要找到拉普拉斯函数的星形变换,我们必须取拉普拉斯方程的留数,如下所示
X ∗ ( s ) = ∑ [ residues of X ( λ ) 1 1 − e − T ( s − λ ) ] at poles of E ( λ ) {\displaystyle X^{*}(s)=\sum {\bigg [}{\text{residues of }}X(\lambda ){\frac {1}{1-e^{-T(s-\lambda )}}}{\bigg ]}_{{\text{at poles of E}}(\lambda )}}
这个数学公式对大多数读者来说比较复杂,因此,我们可以使用另一种方法,如下所示
X ∗ ( s ) = 1 T ∑ n = − ∞ ∞ X ( s + j m ω s ) + x ( 0 ) 2 {\displaystyle X^{*}(s)={\frac {1}{T}}\sum _{n=-\infty }^{\infty }X(s+jm\omega _{s})+{\frac {x(0)}{2}}}
这两种方法都不算简单,因此,在这本书中,我们将不会过多地讨论拉普拉斯变换和星形变换之间的关系。但是,需要说明的是,拉普拉斯变换和星形变换在数学上 *是相关的*。
在一些系统中,我们可能同时具有连续和离散的组件。例如,如果我们的反馈回路包括一个模数转换器,然后是一个计算机(用于处理),最后是一个数模转换器。在这种情况下,计算机作用于数字信号,但系统中的其他部分作用于连续信号。星形变换可以以以下几种方式与拉普拉斯变换交互
假设
Y ( s ) = X ∗ ( s ) H ( s ) {\displaystyle Y(s)=X^{*}(s)H(s)}
那么
Y ∗ ( s ) = X ∗ ( s ) H ∗ ( s ) {\displaystyle Y^{*}(s)=X^{*}(s)H^{*}(s)}
假设
Y ( s ) = X ( s ) H ( s ) {\displaystyle Y(s)=X(s)H(s)}
那么
Y ∗ ( s ) = X H ¯ ∗ ( s ) {\displaystyle Y^{*}(s)={\overline {XH}}^{*}(s)}
Y ∗ ( s ) ≠ X ∗ ( s ) H ∗ ( s ) {\displaystyle Y^{*}(s)\neq X^{*}(s)H^{*}(s)}
其中 X H ¯ ∗ ( s ) {\displaystyle {\overline {XH}}^{*}(s)} 是 *X(s)H(s)* 的星形变换。
星形变换被定义为一个无穷级数,因此它是否收敛(不达到无穷大)至关重要,否则结果将毫无意义。由于星形变换是一个几何级数(对于许多输入信号),我们可以使用几何级数分析来表明该级数是否收敛,以及在哪些特定条件下该级数收敛。星形变换收敛所需的限制称为变换的 **收敛域** (ROC)。通常,变换必须与 ROC 的明确说明一起给出。
假设我们现在有一个以固定间隔采样的离散数据集。我们可以将这个数据集称为 *x[n]*。
x[n] = [ x[0] x[1] x[2] x[3] x[4] ... ]
这也被称为 **双边 Z 变换**。我们只会在本书中讨论该版本的变换。
我们可以利用一种特殊的变换,称为 Z 变换,来简化处理这个数据集。
X ( z ) = Z { x [ n ] } = ∑ n = − ∞ ∞ x [ n ] z − n {\displaystyle X(z)={\mathcal {Z}}\left\{x[n]\right\}=\sum _{n=-\infty }^{\infty }x[n]z^{-n}}
与星形变换类似,Z 变换被定义为一个无穷级数,因此我们需要考虑收敛性。实际上,存在许多情况,它们具有相同的 Z 变换,但收敛域 (ROC) 不同。因此,在谈论 Z 变换时,必须包含 ROC,否则你会丢失重要信息。
与拉普拉斯变换类似,在 Z 域中,我们可以使用系统的输入输出关系来定义 **传递函数**。
Z 域中的传递函数的工作方式与 S 域中的传递函数完全相同。
H ( z ) = Y ( z ) X ( z ) {\displaystyle H(z)={\frac {Y(z)}{X(z)}}}
Z { h [ n ] } = H ( z ) {\displaystyle {\mathcal {Z}}\{h[n]\}=H(z)}
类似地,表示数字系统响应的值 *h[n]* 被称为系统的 **脉冲响应**。但是,需要注意的是,“脉冲”的定义在模拟域和数字域中是不同的。
**逆 Z 变换** 由以下路径积分定义
x [ n ] = Z − 1 { X ( z ) } = 1 2 π j ∮ C X ( z ) z n − 1 d z {\displaystyle x[n]=Z^{-1}\{X(z)\}={\frac {1}{2\pi j}}\oint _{C}X(z)z^{n-1}dz\ }
其中,C 是一个逆时针闭合路径,包围原点,完全位于收敛域 (ROC) 内。轮廓或路径 C 必须包围 X(z) 的所有极点。
与本书中的一些其他内容相比,这个数学相对来说比较高级,因此本书不会过多地关注用这种方法求解逆 Z 变换。 Z 变换对在参考书中被广泛地列出,因此许多读者可以将其视为求解逆 Z 变换的主要方法。 在附录 中以表格形式提供了许多 Z 变换对。
与拉普拉斯变换类似,Z 变换也有一个相关的终值定理。
lim n → ∞ x [ n ] = lim z → 1 ( z − 1 ) X ( z ) {\displaystyle \lim _{n\to \infty }x[n]=\lim _{z\to 1}(z-1)X(z)}
这个公式可以用来求解系统的稳态响应,也可以用来计算系统的稳态误差。
Z 变换与星变换通过以下变量替换相关联。
z = e s T {\displaystyle z=e^{sT}}
请注意,在 Z 域中,我们不会保留有关采样周期的任何信息,因此从星变换信号转换为 Z 域会丢失该信息。 但是,当转换回星域时,如果 T 的值仍然可用,则可以将其重新插入公式中。
另外,Z 变换是双线性的,而星变换是单线性的,这一点也很重要。 这意味着我们只有在采样信号在所有 n < 0 的值上都为零时,才能在这两种变换之间进行转换。
由于两种变换密切相关,可以说 Z 变换只是星变换的记号便利。 正如上面所说,本书完全可以使用星变换来解决所有问题,而完全忽略 Z 变换记号带来的额外负担。 一个常见的例子是 Richard Hamming 的书“科学家和工程师的数值方法”,该书使用傅里叶变换来解决所有问题,将拉普拉斯、星和 Z 变换视为仅仅是记号上的便利。 然而,控制系统华夏公益教科书认为正确利用不同的变换可以使问题更容易解决,因此我们将采用多种变换的方法。
注意 小写 z 是变量的名称,大写 Z 是变换和平面的名称。
z 是一个复变量,具有实部和虚部。 换句话说,我们可以这样定义 z
z = Re ( z ) + j Im ( z ) {\displaystyle z=\operatorname {Re} (z)+j\operatorname {Im} (z)}
由于 z 可以分解为两个独立的成分,因此将变量 z 绘制在Z 平面 上通常很有意义。 在 Z 平面中,水平轴表示 z 的实部,垂直轴表示 z 的虚部的幅值。
还要注意,如果我们根据星变换关系定义 z
z = e s T {\displaystyle z=e^{sT}}
我们可以将 s 分离为实部和虚部。
s = σ + j ω {\displaystyle s=\sigma +j\omega }
我们可以将它代入 z 的公式。
z = e ( σ + j ω ) T = e σ T e j ω T {\displaystyle z=e^{(\sigma +j\omega )T}=e^{\sigma T}e^{j\omega T}}
通过欧拉公式 ,我们可以将复指数分离出来,如下所示。
z = e σ T ( cos ( ω T ) + j sin ( ω T ) ) {\displaystyle z=e^{\sigma T}(\cos(\omega T)+j\sin(\omega T))}
如果我们定义两个新变量 M 和 φ
M = e σ T {\displaystyle M=e^{\sigma T}}
ϕ = ω T {\displaystyle \phi =\omega T}
我们可以用M 和φ来表示z 。注意,这是欧拉公式
z = M cos ( ϕ ) + j M sin ( ϕ ) {\displaystyle z=M\cos(\phi )+jM\sin(\phi )}
很明显,这是一个z 的极坐标表示,极坐标函数的幅值(M )基于s 的实部,极坐标函数的相位(φ)基于s 的虚部。
为了更好地讲解Z变换的收敛域(ROC),我们将举一个简单的例子。
我们有以下离散序列或衰减指数函数
x [ n ] = e − 2 n u [ n ] {\displaystyle x[n]=e^{-2n}u[n]}
现在,我们可以将这个函数代入Z变换公式
X ( z ) = Z [ x [ n ] ] = ∑ n = − ∞ ∞ e − 2 n u [ n ] z − n {\displaystyle X(z)={\mathcal {Z}}[x[n]]=\sum _{n=-\infty }^{\infty }e^{-2n}u[n]z^{-n}}
注意,我们可以去掉单位阶跃函数,并改变求和的范围
X ( z ) = ∑ n = 0 ∞ e − 2 n z − n {\displaystyle X(z)=\sum _{n=0}^{\infty }e^{-2n}z^{-n}}
这是因为当n小于0时,该序列为0。如果我们尝试合并n项,得到以下结果
X ( z ) = ∑ n = 0 ∞ ( e 2 z ) − n {\displaystyle X(z)=\sum _{n=0}^{\infty }(e^{2}z)^{-n}}
当我们的序列以这种形式出现后,我们可以把它分解成类似于我们的几何级数的形式
a = 1 {\displaystyle a=1}
r = ( e 2 z ) − 1 {\displaystyle r=(e^{2}z)^{-1}}
最后,我们可以使用几何级数公式求出最终值
a ∑ k = 0 n r k = a 1 − r n + 1 1 − r = 1 1 − ( ( e 2 z ) − 1 ) n + 1 1 − ( e 2 z ) − 1 {\displaystyle a\sum _{k=0}^{n}r^{k}=a{\frac {1-r^{n+1}}{1-r}}=1{\frac {1-((e^{2}z)^{-1})^{n+1}}{1-(e^{2}z)^{-1}}}}
同样,我们知道为了使该序列收敛,我们需要使r的值小于1
| ( e 2 z ) − 1 | = | 1 e 2 z | ≤ 1 {\displaystyle |(e^{2}z)^{-1}|=\left|{\frac {1}{e^{2}z}}\right|\leq 1}
| e 2 z | ≥ 1 {\displaystyle |e^{2}z|\geq 1}
最后,我们得到了这个Z变换的收敛域
| z | ≥ 1 e 2 {\displaystyle |z|\geq {\frac {1}{e^{2}}}}
在拉普拉斯变换和Z变换之间没有直接、简便的转换方法。几乎所有的转换方法都会忠实地再现原始方程的某些方面,而错误地再现其他方面。有关这两种变换之间的一些主要映射技术,请参见 Z变换映射附录 。
但是,我们还需要讨论一些主题。首先也是最重要的是,拉普拉斯域和Z域之间的转换不是线性的 ,这会导致以下一些问题
L [ G ( z ) H ( z ) ] ≠ G ( s ) H ( s ) {\displaystyle {\mathcal {L}}[G(z)H(z)]\neq G(s)H(s)}
Z [ G ( s ) H ( s ) ] ≠ G ( z ) H ( z ) {\displaystyle {\mathcal {Z}}[G(s)H(s)]\neq G(z)H(z)}
这意味着当我们在一个域中以乘法方式组合两个函数时,我们必须在另一个域中找到一个组合变换。以下是我们如何表示这种组合变换
Z [ G ( s ) H ( s ) ] = G H ¯ ( z ) {\displaystyle {\mathcal {Z}}[G(s)H(s)]={\overline {GH}}(z)}
请注意,我们使用乘积函数顶部的水平线,表示我们对乘积进行了变换,而不是对各个部分进行了变换。但是,如果我们有一个包含采样器的系统,我们可以展示一个简单结果。如果我们有以下格式
Y ( s ) = X ∗ ( s ) H ( s ) {\displaystyle Y(s)=X^{*}(s)H(s)}
那么我们可以将所有内容都用星变换表示
Y ∗ ( s ) = X ∗ ( s ) H ∗ ( s ) {\displaystyle Y^{*}(s)=X^{*}(s)H^{*}(s)}
并且一旦我们进入星域,就可以直接进行变量变化以到达Z域
Y ∗ ( s ) = X ∗ ( s ) H ∗ ( s ) → Y ( z ) = X ( z ) H ( z ) {\displaystyle Y^{*}(s)=X^{*}(s)H^{*}(s)\to Y(z)=X(z)H(z)}
请注意,只有当系统包含理想采样器时,我们才能进行这种等效关系,因此乘积项之一位于星域。
假设我们在拉普拉斯域中具有以下方程
Y ( s ) = A ∗ ( s ) B ( s ) + C ( s ) D ( s ) {\displaystyle Y(s)=A^{*}(s)B(s)+C(s)D(s)}
由于我们在系统中有一个离散采样器,因此我们希望在Z域中对其进行分析。我们可以将此方程分成两个独立的项,并对每个项进行变换
Z [ A ∗ ( s ) B ( s ) ] → Z [ A ∗ ( s ) B ∗ ( s ) ] = A ( z ) B ( z ) {\displaystyle {\mathcal {Z}}[A^{*}(s)B(s)]\to {\mathcal {Z}}[A^{*}(s)B^{*}(s)]=A(z)B(z)}
并且
Z [ C ( s ) D ( s ) ] = C D ¯ ( z ) {\displaystyle {\mathcal {Z}}[C(s)D(s)]={\overline {CD}}(z)}
并将它们加在一起,我们就得到了我们的结果
Y ( z ) = A ( z ) B ( z ) + C D ¯ ( z ) {\displaystyle Y(z)=A(z)B(z)+{\overline {CD}}(z)}
通过替换变量,我们也可以将星变换与傅里叶变换联系起来
e s T = e j ω {\displaystyle e^{sT}=e^{j\omega }}
e ( σ + j ω ) T = e j ω {\displaystyle e^{(\sigma +j\omega )T}=e^{j\omega }}
如果我们假设 *T = 1*,我们可以通过将 *s* 的实部设置为零来将这两个方程联系在一起。请注意,拉普拉斯变换和傅里叶变换之间的关系在此处得到了反映,其中傅里叶变换是拉普拉斯变换,变换变量没有实部。
傅里叶变换也有许多离散时间变体,本书中未讨论这些变体。有关这些变体的更多信息,请参见数字信号处理 。
一些最简单的重建电路被称为“保持电路”。一旦信号使用星形变换(通过理想采样器)进行变换,信号必须使用这些保持系统之一(或等效系统)进行“重建”,然后才能在拉普拉斯域系统中进行分析。
如果我们有一个由星形变换表示的采样信号 X ∗ ( s ) {\displaystyle X^{*}(s)} ,我们希望重建 该信号为连续时间波形,以便我们可以使用拉普拉斯变换技术对其进行操作。
假设我们有采样输入信号、一个表示为 *G(s)* 的重建电路和一个用拉普拉斯变换变量 *Y(s)* 表示的输出。我们可以如下所示关系
Y ( s ) = X ∗ ( s ) G ( s ) {\displaystyle Y(s)=X^{*}(s)G(s)}
因此,重建电路是我们可以用来将数字采样信号转换为连续时间域的物理设备,这样我们就可以对输出信号进行拉普拉斯变换。
零阶保持冲激响应
零阶保持 电路是一个基本上反转采样过程的电路:采样信号在时间 *t* 处的值在输出端保持 *T* 时间。因此,零阶保持电路的输出波形看起来像是原始波形的阶梯近似。
零阶保持电路在拉普拉斯域中的传递函数写成这样
G h 0 = 1 − e − T s s {\displaystyle G_{h0}={\frac {1-e^{-Ts}}{s}}}
零阶保持是最简单的重建电路,并且(与本页上的其他电路一样)假设在数字到模拟转换过程中没有处理延迟。
连续输入信号(灰色)和具有零阶保持的采样信号(红色)
一阶保持的冲激响应。
零阶保持会产生阶梯输出波形,但这并不总是重建电路的最佳方法。相反,一阶保持 电路会在时间 *t* 处取波形的导数,并使用该导数来推测输出波形在时间 *(t + T)* 处将位于何处。然后,一阶保持电路“画一条线”从当前位置到预期的未来位置,作为波形的输出。
G h 1 = 1 + T s T [ 1 − e − T s s ] 2 {\displaystyle G_{h1}={\frac {1+Ts}{T}}\left[{\frac {1-e^{-Ts}}{s}}\right]^{2}}
但是,请记住,信号的下一个值可能与下一个数据点的预期值不同,因此一阶保持可能存在多个不连续性。
输入信号(灰色)和一阶保持电路输出(红色)
零阶保持将当前值输出到输出端,并在整个位时间内保持该值。一阶保持使用函数导数来预测下一个值,并产生一系列斜坡输出以产生波动的波形。但是,有时这两种解决方案都不需要,因此我们有一个折衷方案:分数阶保持 。分数阶保持就像其他两种保持电路的混合,它将分数 *k* 作为参数。请注意,为了使该电路正常工作,*k* 必须介于 0 和 1 之间。
G h k = ( 1 − k e − T s ) 1 − e − T s s + k T s 2 ( 1 − e − T s ) 2 {\displaystyle G_{hk}=(1-ke^{-Ts}){\frac {1-e^{-Ts}}{s}}+{\frac {k}{Ts^{2}}}(1-e^{-Ts})^{2}}
该电路比其他任何保持电路都更复杂,但如果我们从重建电路中获得更好的性能,有时增加的复杂性是值得的。
线性逼近电路的冲激响应。
另一种可以使用的电路是线性逼近 电路。
输入信号(灰色)和通过线性逼近电路的输出信号