Skip to content

第2章 预备知识

2.1 概述

在我们进一步研究信号与系统之前,必须首先建立一些基本的数学预备知识。接下来,我们将介绍与集合(sets)、映射(mappings)、函数(functions)、序列(sequences)、算子(operators)和变换(transforms)相关的一些背景知识。同时,我们还将介绍函数和序列的一些基本性质。

2.2 集合

从术语上讲,有理数(rational number)是形如 \(x / y\) 的数,其中 \(x\)\(y\) 是整数,且 \(y \neq 0\)。也就是说,有理数是整数的比(但不能导致除以零)。例如,\(\frac{1}{2}, 5=\frac{5}{1}\)\(-\frac{2}{3}\) 都是有理数。相比之下,\(\pi\) 不是有理数,因为它不能被精确地表示为整数的比。

整数、有理数、实数和复数的集合分别记为 \(\mathbb{Z}, \mathbb{Q}, \mathbb{R}\)\(\mathbb{C}\)。需要注意的是,集合 \(\mathbb{Z}, \mathbb{Q}, \mathbb{R}, \mathbb{C}\) 不包含无穷大。从这些集合中排除无穷大的原因,是为了保证在通常的算术运算(即加、减、乘、除)下的一致性。对于不熟悉复数的读者,可以在附录A中找到复数的详细介绍。

通常情况下,能够简洁地表示由一组连续整数构成的集合是很方便的。因此,我们引入一些符号来实现这一点。对于两个整数 \(a\)\(b\),我们定义如下表示连续整数集合的符号:

\[ \begin{aligned} & {[a . . b]=\{x \in \mathbb{Z}: a \leq x \leq b\},} \\ & {[a . . b)=\{x \in \mathbb{Z}: a \leq x<b\},} \\ & (a . . b]=\{x \in \mathbb{Z}: a<x \leq b\}, \text { and } \\ & (a . . b)=\{x \in \mathbb{Z}: a<x<b\} . \end{aligned} \]

在这种符号中,\(a\)\(b\) 表示集合的端点,而所用的括号类型(即圆括号或方括号)表示端点是否包含在集合中。方括号表示对应的端点包含在集合中,而圆括号表示对应的端点不包含在集合中。例如:

  • \([0 . .4]\) 表示整数集合 \(\{0,1,2,3,4\}\)
  • \([0 . .4)\) 表示整数集合 \(\{0,1,2,3\}\)
  • \((0 . .4)\) 表示整数集合 \(\{1,2,3\}\)
  • \((0 . .4]\) 表示整数集合 \(\{1,2,3,4\}\)

这种排除一个或两个端点的符号变体,在某些情况下能使表达更为简洁。例如,如果要表示集合 \(\{0,1,2,\ldots,N-1\}\),我们既可以写作 \([0 . . N)\),也可以写作 \([0 . . N-1]\),但前者通常更受青睐,因为它更简洁。

同样,我们常常需要简洁地表示实数轴上的区间。因此,我们引入如下符号。对于两个实数 \(a\)\(b\),定义如下区间符号:

\[ \begin{aligned} [a, b] &=\{x \in \mathbb{R}: a \leq x \leq b\}, \\ (a, b) &=\{x \in \mathbb{R}: a<x<b\}, \\ [a, b) &=\{x \in \mathbb{R}: a \leq x<b\}, \\ (a, b] &=\{x \in \mathbb{R}: a<x \leq b\}. \end{aligned} \]

在这种符号中,\(a\)\(b\) 表示集合区间的端点,而括号类型表示端点是否包含。方括号表示端点包含,圆括号表示端点不包含。例如:

  • \([0,100]\) 表示从0到100的所有实数,包括0和100;
  • \((-\pi, \pi]\) 表示从 \(-\pi\)\(\pi\) 的所有实数,排除 \(-\pi\) 但包含 \(\pi\)
  • \([-\pi, \pi)\) 表示从 \(-\pi\)\(\pi\) 的所有实数,包含 \(-\pi\) 但排除 \(\pi\)
  • \((0,1)\) 表示从0到1的所有实数,排除0和1。

2.3 映射

映射(mapping) 是涉及两个集合的关系,它将一个集合中的每个元素(称为定义域)对应到另一个集合中的某个元素(称为值域)。符号 \(f: A \rightarrow B\) 表示一个映射 \(f\),其定义域为集合 \(A\),值域为集合 \(B\)。下面给出一个非常简单的映射例子。

例2.1. 设 \(A\)\(B\) 为如下集合:

\[ A=\{1,2,3,4\} \quad \text { and } \quad B=\{0,1,2,3\} . \]

定义 \(f: A \rightarrow B\),使得

\[ f(x)= \begin{cases}0 & x \in\{1,2\} \\ 1 & x=4 \\ 2 & x=3\end{cases} \]

映射 \(f\) 将定义域 \(A\) 中的每个元素 \(x\) 映射到值域 \(B\) 中的元素 \(f(x)\)。该映射的图示如图2.1所示。

上述例子中的映射非常简单。现在我们考虑一些更有趣的映射例子。正弦函数(即 sin)就是一个映射的例子。对于每个实数 \(t\),正弦函数将 \(t\) 映射为 \(\sin t\)。在正弦函数的情况下,定义域和值域都是实数。另一个例子是函数 trunc,它将实数 \(t\) 舍去小数部分后取整为整数(即 trunc 向零舍入)。trunc 函数是一个映射,其定义域是实数,而值域是整数。

尽管映射的种类非常多,但与我们研究信号与系统最相关的映射类型是:函数、序列、系统算子和变换。在接下来的小节中,我们将介绍(或进一步阐述)这些映射类型。


图2.1:映射 \(f\)

2.4 函数

函数(function) 是一种映射,其定义域是连续性的集合,例如实数、复数或它们的某个子集。在实际应用中,值域通常是实数或复数。函数也常被称为连续时间(CT)信号。这里我们主要关注单一自变量的函数(即一维函数)。三角函数正弦(sin)就是一个函数的例子,它将每个实数 \(t\) 映射到实数 \(\sin t\)。在这种情况下,定义域和值域都是实数。

对于一个函数 \(f\),表达式“\(f(t)\)”表示函数 \(f\)\(t\) 处的取值。注意,“\(f(t)\)”并不表示函数 \(f\) 本身。明确区分这一点非常重要,我们稍后还会再次强调。通常,函数的参数放在括号中(圆括号、方括号或花括号)。对于只有单个参数的标准数学函数(如 sin 和 cos),在不需要分组时一般省略括号。例如,我们通常写“sin \(t\)”而不是“\(\sin (t)\)”。但对于非标准函数如 \(f\),则必须写作“\(f(t)\)”,而不能写“\(f t\)”。

数学上可以通过多种方式来定义函数。但在工程中,最常见的是用定义方程来指定函数。例如,可以定义一个函数 \(f\),它将实数 \(t\) 映射为 \(t^{2}\)(平方函数),用方程 \(f(t)=t^{2}\) 表示。在这里,\(f\) 是函数,而 \(t\) 是一个虚拟变量,仅用于书写定义 \(f(t)=t^{2}\) 的方程。由于 \(t\) 只是虚拟变量,方程 \(f(t)=t^{2}\)\(f(x)=x^{2}\) 定义的是同一个函数。注意,“\(f\)”与“\(f(t)=t^{2}\)”严格来说是不同的。“\(f\)”是函数本身,而“\(f(t)=t^{2}\)”不是函数 \(f\),而是定义 \(f\) 的方程。因此,严格来说,在定义一个函数 \(f\) 时,我们应该表述为:“令 \(f\) 为由方程 \(f(t)=\ldots\) 定义的函数”。在实际中,我们常常滥用符号,直接写作“函数 \(f(t)=\ldots\)”或“\(f(t)=\ldots\)”。所幸的是,这种符号上的滥用在大多数情况下并不会引起问题。

由于符号约定至关重要,因此有必要花一些时间来清晰地介绍它们。接下来我们通过几个例子来说明与函数相关的符号。

例2.2.\(f\)\(g\) 分别表示一个实变量的实值函数,\(t\) 为任意实数。表达式 \(f+g\) 表示一个函数,即由函数 \(f\)\(g\) 相加得到的函数。表达式 \(f(t)+g(t)\) 表示一个数,即:1)函数 \(f\)\(t\) 处的值;与 2)函数 \(g\)\(t\) 处的值之和。表达式 \((f+g)(t)\) 表示:1)先计算一个新函数 \(h\),它是 \(f\)\(g\) 的和;2)再在 \(t\) 处取 \(h\) 的值。需要注意的是,\((f+g)(t)\)\(f(t)+g(t)\) 的含义略有不同。前者是对两个函数执行加法,而后者是对两个数执行加法。尽管这两个表达式的含义略有不同,但它们总是相等的。换句话说,总有 $$ (f+g)(t)=f(t)+g(t) \quad \text { 对所有 } t \text{成立}. $$

这是因为函数加法正是这样定义的。换句话说,我们通过对应点的值相加来实现函数的相加(即函数加法按逐点方式定义)。

例2.3. 对于两个函数 \(x_{1}\)\(x_{2}\),表达式 \(x_{1}+x_{2}\) 表示函数 \(x_{1}\)\(x_{2}\) 的和。表达式 \((x_{1}+x_{2})(t)\) 表示函数 \(x_{1}+x_{2}\)\(t\) 处的值。由于函数加法可以逐点定义(即通过对应点的值相加来实现),以下关系总是成立: $$ (x_{1}+x_{2})(t)=x_{1}(t)+x_{2}(t) \quad \text{对所有 } t \text{成立}. $$

同样,由于减法、乘法和除法也可以逐点定义,因此以下关系也成立:

\[ \begin{aligned} (x_{1}-x_{2})(t)&=x_{1}(t)-x_{2}(t) \quad \text { 对所有 } t, \\ (x_{1} x_{2})(t)&=x_{1}(t) x_{2}(t) \quad \text { 对所有 } t, \quad \text{以及} \\ (x_{1} / x_{2})(t)&=x_{1}(t) / x_{2}(t) \quad \text { 对所有 } t . \end{aligned} \]

然而需要注意的是,并非所有涉及函数的数学运算都能逐点定义。有些运算从根本上要求其操作对象是函数。卷积运算(针对函数)就是这样一个例子。如果某个运算符(这里用“\(\diamond\)”表示)定义为只能作用于函数,那么表达式 \((x_{1}\diamond x_{2})(t)\) 在数学上是有效的,但表达式 \(x_{1}(t)\diamond x_{2}(t)\) 则无效。后者无效的原因是 \(\diamond\) 运算符要求两个函数作为操作数,而 \(x_{1}(t)\)\(x_{2}(t)\) 是数(即函数 \(x_{1}\)\(x_{2}\)\(t\) 处的值)。正因如此,在使用与函数相关的数学符号时必须谨慎,否则很容易写出模糊、矛盾或毫无意义的表达式。

2.5 序列

序列(sequence) 是一种映射,其定义域是离散性的集合,例如整数或其子集。在实际应用中,值域通常是实数或复数。序列也常被称为离散时间(DT)信号。这里我们主要关注单一自变量的序列(即一维序列)。完全平方数序列 \(1^{2}, 2^{2}, 3^{2}, 4^{2}, \ldots\) 就是一个例子,它将每个正整数 \(n\) 映射为整数 \(n^{2}\)。在这种情况下,定义域和值域分别是正整数。

与函数类似,关于序列的表达式也需作出区分。对于序列 \(f\),表达式“\(f(n)\)”表示序列 \(f\)\(n\) 处的值,而表达式“\(f\)”表示序列 \(f\) 本身。明确区分序列与其取值通常非常重要。序列通常通过定义方程给出。例如,将整数 \(n\) 映射为 \(n^{2}\) 的序列(平方序列)可用方程 \(f(n)=n^{2}\) 表示。

由于符号约定同样至关重要,因此有必要花一些时间来清晰地介绍它们。接下来我们通过几个例子来说明与序列相关的符号。

例2.4.\(f\)\(g\) 分别表示一个整数索引的实值序列,\(n\) 为任意整数。表达式 \(fg\) 表示一个序列,即由 \(f\)\(g\) 相乘得到的序列。表达式 \(f(n)g(n)\) 表示一个数,即:1)序列 \(f\)\(n\) 处的值;与 2)序列 \(g\)\(n\) 处的值之积。表达式 \((fg)(n)\) 表示:1)先计算一个新序列 \(h\),它是 \(f\)\(g\) 的积;2)再在 \(n\) 处取 \(h\) 的值。需要注意的是,\((fg)(n)\)\(f(n)g(n)\) 的含义略有不同。前者是对两个序列执行乘法,而后者是对两个数执行乘法。尽管这两个表达式的含义略有不同,但它们总是相等的。换句话说,总有 $$ (f g)(n)=f(n) g(n) \quad \text { 对所有 } n \text{成立}. $$

这是因为序列乘法正是这样定义的。换句话说,我们通过对应点的值相乘来实现序列的相乘(即序列乘法按逐点方式定义)。

例2.5. 对于两个序列 \(x_{1}\)\(x_{2}\),我们有两种方式可以表示它们相等。第一种,直接写作 \(x_{1}=x_{2}\)。第二种,写作 \(x_{1}(n)=x_{2}(n)\) 对所有 \(n\) 成立。前一种方式更简洁,因此通常更优。

例2.6. 对于两个序列 \(x_{1}\)\(x_{2}\),表达式 \(x_{1}+x_{2}\) 表示序列 \(x_{1}\)\(x_{2}\) 的和。表达式 \((x_{1}+x_{2})(n)\) 表示序列 \(x_{1}+x_{2}\)\(n\) 处的值。由于序列加法可以逐点定义(即通过对应点的值相加来实现),以下关系总是成立: $$ (x_{1}+x_{2})(n)=x_{1}(n)+x_{2}(n) \quad \text { 对所有 } n \text{成立}. $$

同样,由于减法、乘法和除法也可以逐点定义,因此以下关系也成立:

\[ \begin{gathered} (x_{1}-x_{2})(n)=x_{1}(n)-x_{2}(n) \quad \text { 对所有 } n, \\ (x_{1} x_{2})(n)=x_{1}(n) x_{2}(n) \quad \text { 对所有 } n, \\ (x_{1} / x_{2})(n)=x_{1}(n) / x_{2}(n) \quad \text { 对所有 } n . \end{gathered} \]

然而需要注意的是,并非所有涉及序列的数学运算都能逐点定义。有些运算从根本上要求其操作对象是序列。卷积运算(针对序列)就是这样一个例子。如果某个运算符(这里用“\(\diamond\)”表示)定义为只能作用于序列,那么表达式 \((x_{1}\diamond x_{2})(n)\) 在数学上是有效的,但表达式 \(x_{1}(n)\diamond x_{2}(n)\) 则无效。后者无效的原因是 \(\diamond\) 运算符要求两个序列作为操作数,而 \(x_{1}(n)\)\(x_{2}(n)\) 是数(即序列 \(x_{1}\)\(x_{2}\)\(n\) 处的值)。正因如此,在使用与序列相关的数学符号时必须谨慎,否则很容易写出模糊、矛盾或毫无意义的表达式。

2.6 关于符号滥用的说明

不幸的是,对于一个函数 \(f\),工程师们常常滥用数学符号,把“ \(f(t)\) ”写来指代函数 \(f\) 本身。类似的问题在序列(sequence)的情形下也存在。然而,这种数学符号的滥用往往会导致麻烦。在某些情况下,明确区分函数(或序列)与其取值是至关重要的,若未能做到这一点,就可能导致许多问题,例如写出含糊不清、自相矛盾或毫无意义的数学表达式。因此,强烈建议在表达时尽量保持函数(或序列)与其取值之间的明确区分。

话虽如此,符号的滥用在一些琐碎的情境下通常不会造成问题。例如,如果我们仅仅把“the function \(f(t)\) ”写作“the function \(f\) ”的代替,这通常不会引起混淆。而在表达式包含数学运算或多个变量时,符号的滥用更可能带来问题,例如:\(f(t-1), f(7 t)\), \(f(a t-b), t f(t)\), 和 \(f(t-\tau)\)。在这些情况下,符号的滥用使得原本的含义变得不清晰,从而带来误解的可能性。例如在“ \(f(t-\tau)\) ”这一表达式中,如果允许滥用符号,就可能存在多种合理的解释。具体来说,“ \(f(t-\tau)\) ”可能意味着:

  1. 一个数值,即函数 \(f\)\(t-\tau\) 处的取值;
  2. 一个匿名(anonymous,即未命名)函数,该函数等于函数 \(g\),其中 \(g(x)=f(x-\tau)\)(即 \(t\)\(\tau\) 被解释为变量和常量,分别对应);
  3. 一个匿名函数,该函数等于函数 \(g\),其中 \(g(x)=f(t-x)\)(即 \(t\)\(\tau\) 被解释为常量和变量,分别对应);
  4. 一个匿名函数,该函数等于常数函数 \(g\),其中 \(g(x)=f(t-\tau)\)(即 \(t\)\(\tau\) 都被解释为常量)。

表2.1:函数和序列的点符号(dot notation)示例。分别给出了 (a) 函数 和 (b) 序列的例子。

(a)

已命名函数 \(f\) 对应的匿名函数
\(f(t)=g(t)\) \(g(\cdot)\)
\(f(t)=t^{2}\) \((\cdot)^{2}\)
\(f(t)=\sqrt[3]{t}\) \(\sqrt[3]{.}\)
\(f(t)=e^{t}\) \(e^{(\cdot)}\)
$f(t)= t
\(f(t)=t^{2}+3 t+1\) \((\cdot)^{2}+3 \cdot+1\)
\(f(t)=g(a t-b)\) \(g(a \cdot-b)\)
\(f(t)=g(t-1)\) \(g(\cdot-1)\)
\(f(t)=g(3 t)\) \(g(3 \cdot)\)

(b)

已命名序列 \(f\) 对应的匿名序列
\(f(n)=g(n)\) \(g(\cdot)\)
\(f(n)=n^{2}\) \((\cdot)^{2}\)
\(f(n)=\sin \left(\frac{2 \pi}{3} n\right)\) \(\sin \left[\frac{2 \pi}{3}(\cdot)\right]\)
\(f(n)=g(3 n)\) \(g(3 \cdot)\)
\(f(n)=g(n-1)\) \(g(\cdot-1)\)
\(f(n)=n g(n)\) \((\cdot) g(\cdot)\)
\(f(n)=2 n^{2}+n+5\) \(2(\cdot)^{2}+(\cdot)+5\)

在类似上述的情形中,符号问题可以很容易地通过明确地用方程定义函数来避免。换句话说,我们可以给所要指定的函数起一个名字,然后用方程进行定义。例如,与其说“the function \(f(t-\tau)\)”,不如说“the function \(g(t)=f(t-\tau)\)”。这种符号就清楚地表明了 \(\tau\) 是一个常量。再例如,与其说“the function \(f(t-1)\)”,不如说“the function \(g(t)=f(t-1)\)”。

由于存在如上所述的问题,在使用匿名函数时必须格外小心,以避免产生含糊的符号。因为含糊的符号是问题的常见根源,作者建议在大多数情况下最好避免使用匿名函数。

2.7 函数和序列的点符号

有时会遇到这样的情况:需要区分一个函数与函数的取值,但又不想通过给函数命名或使用更冗长的符号方式来实现。类似的情况也存在于序列中。在这方面,点符号(dot notation)对于函数和序列是非常有用的。如果我们希望表明一个表达式对应的是一个函数(而不是一个函数的取值),我们可以使用间点符号(即“.”)来表示。在每个函数变量通常出现的位置,我们只需用间点符号(即“.”)替代即可。例如,\(\sqrt{\cdot}\) 表示平方根函数,而 \(\sqrt{t}\) 表示平方根函数在 \(t\) 处的取值。更多函数的点符号示例见表2.1(a)。类似的约定也可应用于序列。序列的点符号示例如表2.1(b) 所示。由于一些读者可能会觉得这种点符号有些陌生,本书尽量减少使用这种符号。然而,在一些有限的地方仍会使用它,以便在不啰嗦的情况下保持清晰。尽管点符号起初看起来陌生,但它在数学家中是非常常用的符号。不幸的是,工程师们使用得并不多,尽管它非常有用。

2.8 系统算子

系统算子(system operator)是一种用于表示系统的映射。在以下内容中,我们将专注于单输入单输出系统的情形,因为这是本文的主要研究对象。一个(单输入单输出)系统算子将表示系统输入的函数或序列映射为表示系统输出的函数或序列。例如,系统 \(\mathcal{H}\) 将一个函数映射到一个函数,定义如下:

\[ \mathcal{H} x(t)=2 x(t) \]

它将输入函数 \(x\) 乘以因子 2,从而得到输出函数。再例如,系统 \(\mathscr{H}\) 将一个序列映射到一个序列,定义如下:

\[ \mathcal{H} x(n)=x(n)+1 \]

它将输入序列 \(x\) 加 1,从而得到输出序列。

对于系统算子 \(\mathcal{H}\) 和函数 \(x\),表达式 \(\mathcal{H}(x)\) 表示当输入为函数 \(x\) 时,系统 \(\mathcal{H}\) 产生的输出。由于在算子 \(\mathcal{H}\) 后面只有一个符号 \(x\),这个表达式的运算分组只有一种方式。因此,可以省略括号而不改变表达式的含义。换句话说,我们可以等价地将 \(\mathcal{H}(x)\) 写作 \(\mathcal{H} x\)。由于 \(\mathcal{H} x\) 是一个函数,我们可以在 \(t\) 处对其进行求值,这对应于表达式 \((\mathcal{H} x)(t)\)。我们可以省略该表达式中的第一层括号,而不改变其含义。换句话说,表达式 ( \(\mathcal{H} x\) ) ( \(t\) ) 和 \(\mathcal{H} x(t)\) 含义完全相同。这是因为在 \(\mathcal{H} x(t)\) 中只有一种可能的数学上有效的分组方式。例如,分组 \(\mathcal{H}[x(t)]\) 是数学上无效的,因为 \(\mathcal{H}\) 的操作数必须是函数,而提供的操作数 \(x(t)\) 是一个数(即函数 \(x\)\(t\) 处的取值)。

再一次强调,由于符号约定起着关键作用,因此值得花些时间来清晰地引入这些约定。在下文中,我们给出若干示例来说明系统算子相关符号的各个方面。

示例2.7 对于系统算子 \(\mathcal{H}\),函数 \(x\),实变量 \(t\) 和实常数 \(t_{0}\),表达式 \(\mathcal{H} x\left(t-t_{0}\right)\) 表示:当输入为函数 \(x\) 时,系统 \(\mathcal{H}\) 产生的输出函数为 \(y\),再在 \(t-t_{0}\) 处对 \(y\) 进行求值。\(\square\)

示例2.8 对于系统算子 \(\mathcal{H}\),函数 \(x^{\prime}\) 和实数 \(t\),表达式 \(\mathcal{H} x^{\prime}(t)\) 表示:当输入为函数 \(x^{\prime}\) 时,系统 \(\mathcal{H}\) 产生的输出函数为 \(y\),再在 \(t\) 处对 \(y\) 进行求值。\(\square\)

示例2.9 对于系统算子 \(\mathcal{H}\),函数 \(x\) 和复常数 \(a\),表达式 \(\mathcal{H}(a x)\) 表示:当输入为函数 \(a x\)(即 \(a\) 倍的 \(x\))时,系统 \(\mathcal{H}\) 产生的输出。\(\square\)

示例2.10 对于系统算子 \(\mathfrak{H}\) 以及函数 \(x_{1}\)\(x_{2}\),表达式 \(\mathfrak{H}\left(x_{1}+x_{2}\right)\) 表示:当输入为函数 \(x_{1}+x_{2}\) 时,系统 \(\mathcal{H}\) 产生的输出。注意,在这种情况下,不能省略括号,否则会改变表达式的含义。即 \(\mathcal{H} x_{1}+x_{2}\) 的含义是 ( \(\mathcal{H} x_{1}\) ) \(+x_{2}\),即函数 \(x_{2}\) 与当输入为函数 \(x_{1}\) 时系统 \(\mathcal{H}\) 产生的输出之和。\(\square\)

示例2.11 对于系统算子 \(\mathfrak{H}\),函数 \(x_{1}\)\(x_{2}\),复常数 \(a_{1}\)\(a_{2}\),表达式 \(\mathcal{H}\left(a_{1} x_{1}+a_{2} x_{2}\right)\) 表示:当输入为函数 \(a_{1} x_{1}+ a_{2} x_{2}\) 时,系统 \(\mathcal{H}\) 产生的输出。\(\square\)

示例2.12\(\mathscr{H}_{1}\)\(\mathscr{H}_{2}\) 表示两个系统的算子,\(x\) 表示一个函数。考虑表达式 \(\mathfrak{H}_{2} \mathfrak{H}_{1} x\)。该表达式所隐含的运算分组是 \(\mathfrak{H}_{2}\left(\mathfrak{H}_{1} x\right)\)。因此,该表达式表示:当输入为函数 \(y\) 时,系统 \(\mathscr{H}_{2}\) 产生的输出,其中 \(y\) 是当输入为函数 \(x\) 时系统 \(\mathscr{H}_{1}\) 产生的输出。\(\square\)

2.9 变换

后面我们将会介绍几类称为变换(transforms)的映射。变换的数学结构与系统算子(system operators)类似。也就是说,变换把函数/序列映射为函数/序列。由于这种结构上的相似性,之前关于系统算子的许多说明同样适用于变换的情况。在信号与系统的研究中,一些重要的变换示例列在表2.2中。例如,傅里叶变换(Fourier transform,后面介绍)记作 \(\mathcal{F}\),而将傅里叶变换算子作用于函数/序列 \(x\) 的结果记作 \(\mathcal{F} x\)

表2.2:变换示例

名称 定义域 值域
连续时间傅里叶级数 (CT Fourier Series) \(T\) 周期函数(定义域 \(\mathbb{R}\) 序列(定义域 \(\mathbb{Z}\)
连续时间傅里叶变换 (CT Fourier Transform) 函数(定义域 \(\mathbb{R}\) 函数(定义域 \(\mathbb{R}\)
拉普拉斯变换 (Laplace Transform) 函数(定义域 \(\mathbb{R}\) 函数(定义域 \(\mathbb{C}\)
离散时间傅里叶级数 (DT Fourier Series) \(N\) 周期序列(定义域 \(\mathbb{Z}\) \(N\) 周期序列(定义域 \(\mathbb{Z}\)
离散时间傅里叶变换 (DT Fourier Transform) 序列(定义域 \(\mathbb{Z}\) \(2 \pi\) 周期函数(定义域 \(\mathbb{R}\)
Z 变换 (Z Transform) 序列(定义域 \(\mathbb{Z}\) 函数(定义域 \(\mathbb{C}\)

2.10 信号的基本性质

信号可以具备许多有趣的性质。以下我们介绍一些经常有用的基本性质。

2.10.1 函数和序列的对称性(Symmetry of Functions and Sequences)

若函数 \(x\) 满足

\[ \begin{equation*} x(t)=x(-t) \quad \text { 对所有实数 } t \tag{2.1} \end{equation*} \]

则称函数 \(x\)偶函数(even)

类似地,若序列 \(x\) 满足

\[ \begin{equation*} x(n)=x(-n) \quad \text { 对所有整数 } n \tag{2.2} \end{equation*} \]

则称序列 \(x\)偶序列(even)

几何上,偶函数或偶序列关于纵轴对称。偶函数和偶序列的示例如图2.2与图2.3所示。其他偶函数的例子包括余弦函数、绝对值函数和平方函数。其他偶序列的例子包括单位冲激序列(unit-impulse)和矩形序列(rectangular sequence,后面介绍)。

图2.2:偶函数示例。

图2.3:偶序列示例。

若函数 \(x\) 满足

\[ \begin{equation*} x(t)=-x(-t) \quad \text { 对所有实数 } t \tag{2.3} \end{equation*} \]

则称函数 \(x\)奇函数(odd)

类似地,若序列 \(x\) 满足

\[ \begin{equation*} x(n)=-x(-n) \quad \text { 对所有整数 } n \tag{2.4} \end{equation*} \]

则称序列 \(x\)奇序列(odd)

几何上,奇函数或奇序列关于原点对称。奇函数和奇序列的示例如图2.4与图2.5所示。很容易证明,若奇函数或奇序列 \(x\) 的定义域包含0,则必有 \(x(0)=0\)。其他奇函数的例子包括正弦函数、符号函数(signum)和立方函数(即 \(x(t)=t^{3}\))。

图2.4:奇函数示例。

图2.5:奇序列示例。

若函数 \(x\) 满足

\[ \begin{equation*} x(t)=x^{*}(-t) \quad \text { 对所有实数 } t \tag{2.5} \end{equation*} \]

则称函数 \(x\)共轭对称(conjugate symmetric)

类似地,若序列 \(x\) 满足

\[ \begin{equation*} x(n)=x^{*}(-n) \quad \text { 对所有整数 } n \tag{2.6} \end{equation*} \]

则称序列 \(x\)共轭对称(conjugate symmetric)

一个共轭对称函数的例子是复正弦函数 \(x(t)=\cos (\omega t)+j \sin (\omega t)\),其中 \(\omega\) 为实常数。共轭对称函数或序列的实部为偶函数,虚部为奇函数。

2.10.2 函数和序列的周期性(Periodicity of Functions and Sequences)

若函数 \(x\) 对某个严格正实常数 \(T\) 满足

\[ \begin{equation*} x(t)=x(t+T) \quad \text { 对所有实数 } t \tag{2.7} \end{equation*} \]

则称函数 \(x\) 为周期为 \(T\) 的周期函数(\(T\)-periodic)。

换句话说,\(T\) 周期函数的图像在横轴上每隔 \(T\) 个单位重复一次。\(T\) 周期函数 \(x\) 的频率为 \(\tfrac{1}{T}\),角频率为 \(\tfrac{2 \pi}{T}\)。类似地,若序列 \(x\) 对某个严格正整数 \(N\) 满足

\[ \begin{equation*} x(n)=x(n+N) \quad \text { 对所有整数 } n \tag{2.8} \end{equation*} \]

则称序列 \(x\) 为周期为 \(N\) 的周期序列(\(N\)-periodic)。

\(N\) 周期序列 \(x\) 的频率为 \(\tfrac{1}{N}\),角频率为 \(\tfrac{2 \pi}{N}\)。若函数或序列不是周期的,则称其为非周期的(aperiodic)。周期函数和周期序列的示例如图2.6与图2.7所示。其他周期函数的例子包括余弦和正弦函数。

图2.6:周期函数示例(基本周期为 \(T\))。

图2.7:周期序列示例(基本周期为4)。

周期函数或序列的周期不是唯一确定的。具体来说,若函数或序列的周期为 \(T\),则它同时也是 \(kT\) 的周期函数或序列,其中 \(k\) 为任意严格正整数。但在大多数情况下,我们关心的是满足 (2.7) 或 (2.8) 的最小(正)\(T\)\(N\)。我们称该值为基本周期(fundamental period)。对应的频率称为基频(fundamental frequency)。

例如,考虑图2.6中的周期函数 \(x\)。函数 \(x\) 的周期可以是 \(T, 2T, 3T, \dots\),但其基本周期唯一确定为 \(T\)

当函数或序列是周期的,它在每个周期内循环取值。通常,我们只关心振荡速率(即每单位时间完成的周期数)。在某些情况下,将振荡与方向(或顺序)联系起来也是有意义的。例如,一个函数或序列可能在每个周期内按正向或反向循环。在方向具有关键意义的情境下,通常用符号(即正号或负号)来表示频率,以指示周期循环发生的方向。这就引出了符号频率(signed frequency)的概念。符号频率的大小表示振荡速率(即每单位时间的周期数),符号(正或负)表示振荡方向。

举一个更具体的例子:考虑一个以固定速率旋转的轮子。我们不仅可能关心轮子每秒转多少圈(即通常所说的频率),也可能关心它是逆时针还是顺时针转动。在这种情况下,我们可以使用符号频率的概念。也就是说,可以将频率定义为带符号的量,其中符号频率的大小表示旋转速率(每秒旋转次数),而符号(正或负)表示旋转方向。假设我们采用这样的约定:逆时针方向对应正符号频率,顺时针方向对应负符号频率。那么符号频率为 10 表示轮子以逆时针方向每秒旋转 10 圈,而符号频率为 -10 表示轮子以顺时针方向每秒旋转 10 圈。

通常,为了简洁,我们直接把“符号频率”称为“频率”。这通常不会引起混淆,因为从上下文中通常可以清楚地看出是否在使用符号频率。

2.11 练习

2.11.1 无答案练习

2.1\(\mathscr{G}\)\(\mathscr{H}\) 为系统算子,映射函数到函数;\(x\)\(y\) 为函数;并假设所有其他变量为数值。将下列表达式完全加括号以显示所有运算的隐含分组:
(a) \(\mathcal{H} x(t)=t^{2}+1\)
(b) \(\mathcal{G} \mathcal{H} y(t)\)
(c) \(\mathcal{H} x+y\)
(d) \(x \mathcal{H} \mathcal{G} y\)

2.2\(\mathcal{H}\) 为系统算子,映射函数到函数;\(x\)\(y\) 为函数;其余变量为数值。使用严格正确的数学符号,为下列各量写出表达式。仅在严格必要时使用括号分组。使用 \(\mathcal{D}\) 表示微分算子。
(a) 系统 \(\mathcal{H}\) 的输出,输入为 \(y\)
(b) 系统 \(\mathcal{H}\) 的输出在 \(2 t-1\) 处的取值,输入为 \(x\)
(c) 系统 \(\mathcal{H}\) 的输出在 \(t\) 处的取值,输入为 \(a x\)
(d) 系统 \(\mathcal{H}\) 的输出在 \(5 t\) 处的取值,输入为 \(x+y\)
(e) 系统 \(\mathfrak{H}\) 的输出的导数,输入为 \(a x\)
(f) 系统 \(\mathcal{H}\) 的输出,输入为 \(a x\) 的导数;
(g) 以下两部分之和:1)系统 \(\mathcal{H}\) 的输出,输入为 \(x\);2)系统 \(\mathcal{H}\) 的输出,输入为 \(y\)
(h) 系统 \(\mathcal{H}\) 的输出,输入为 \(x+y\)
(i) \(x\) 的导数在 \(5 t-3\) 处的取值。

2.3\(\mathcal{D}\) 表示微分算子;\(\mathcal{H}_{1}, \mathcal{H}_{2}, \mathcal{H}_{3}\) 分别定义为 \(\mathcal{H}_{1} x(t)=t x(t)\)\(\mathcal{H}_{2} x(t)= x(t-1)\)\(\mathcal{H}_{3} x(t)=x(3 t)\)\(x_{1}\) 定义为 \(x_{1}(t)=t-1\)。计算下列表达式:
(a) \(\mathcal{H}_{2} \mathcal{H}_{1} x_{1}(t)\)
(b) \(\mathcal{H}_{1} \mathcal{H}_{2} x_{1}(t)\)
(c) \(\mathcal{H}_{1} x_{1}(t-1)\)
(d) \(\mathcal{D H}_{3} x_{1}(t)\)
(e) \(\mathcal{H}_{3} \mathcal{D} x_{1}(t)\)
(f) \(\mathcal{D}\left\{3 x_{1}\right\}(t)\)

2.11.2 有答案练习

2.101 在以下各题中,求函数 \(y\) 的最简表达式。
(a) \(y(t)=\mathcal{D} x(3 t)\),其中 \(x(t)=t^{2}+2 t+1\)\(\mathcal{D}\) 为微分算子;
(b) \(y(t)=\mathcal{D}\{x(3 \cdot)\}(t)\),其中 \(x(t)=t^{2}+2 t+1\)\(\mathcal{D}\) 为微分算子;
(c) \(y(t)=\mathcal{H} x(t-3)\),其中 \(\mathcal{H} x(t)=t x(t)\)\(x(t)=2 t+1\)
(d) \(y(t)=\mathcal{H}\{x(\cdot-3)\}(t)\),其中 \(\mathcal{H} x(t)=t x(t)\)\(x(t)=2 t+1\)

简答: (a) \(y(t)=6 t+2\);(b) \(y(t)=18 t+6\);(c) \(y(t)=2 t^{2}-11 t+15\);(d) \(y(t)=2 t^{2}-5 t\)