数字信号处理入门:离散时间系统的时域分析、傅里叶分析与采样定理

从离散时间系统的时域分析、傅里叶分析到采样定理,系统梳理数字信号处理入门阶段的核心概念与方法。

数字信号处理入门:离散时间系统的时域分析、傅里叶分析与采样定理

这篇博客面向刚开始学习数字信号处理的读者。它的目标不是把公式简单堆在一起,而是把每一个概念放到“为什么需要它、它解决什么问题、公式该怎样理解”的语境中说明。

这一讲可以概括为三条主线:先认识离散时间系统,理解输入、输出、线性、时不变、因果和稳定;再学习用差分方程描述系统,并用递推法求系统响应;最后进入傅里叶分析和采样定理,理解为什么模拟信号可以变成数字信号,数字处理后又怎样恢复为模拟信号。


学习路线:本讲到底要解决什么问题

数字信号处理中的“系统”,可以理解为对输入序列进行某种运算的装置。这个装置可以是一个数学公式,也可以是一个程序,还可以是一个真实的电子设备。输入给它一个序列,它输出另一个序列。

本讲的学习路线如下。

首先,我们研究时域离散系统。这里的“时域”表示直接在时间序列上分析,“离散”表示时间变量只取整数点。我们要知道系统如何把输入序列 x(n)x(n) 变成输出序列 y(n)y(n)

其次,我们研究系统的输入输出描述法。实际系统常常不是直接给出冲激响应,而是用差分方程描述。例如输出可能与前一时刻输出、当前输入、前一时刻输入有关。差分方程就是离散系统中的基本数学模型。

再次,我们学习傅里叶分析。傅里叶分析的核心思想是:复杂信号可以拆成很多不同频率的正弦波或复指数信号。这样我们就能从频率角度理解信号的结构。

最后,我们学习模拟信号数字处理方法,也就是模拟信号怎样采样成数字信号,数字处理后又怎样恢复为模拟信号。这部分会引出采样定理、频谱混叠、抗混叠滤波器和理想恢复公式。


离散时间系统:从输入到输出

设时域离散系统的输入为 x(n)x(n),经过某种规定的运算后,输出序列记为 y(n)y(n)。如果用 T[]T[\cdot] 表示这个系统的运算关系,那么输入和输出之间可以写成:

y(n)=T[x(n)]y(n)=T[x(n)]

离散时间系统输入输出关系

这条公式看起来简单,但它是整个系统分析的起点。这里的 T[]T[\cdot] 不一定是一个简单公式,它可以表示滤波、延迟、累加、差分、放大、压缩、编码等任何一种处理过程。

例如,若系统满足:

y(n)=x(n1)y(n)=x(n-1)

它表示输出是输入延迟一个采样点。若系统满足:

y(n)=x(n)+x(n1)y(n)=x(n)+x(n-1)

它表示当前输出等于当前输入与前一时刻输入之和。学习数字信号处理时,所有复杂系统都可以先从这种输入输出关系开始理解。


线性系统:叠加原理是判断核心

如果一个系统的输入和输出满足线性叠加原理,则称为线性系统。

设输入 x1(n)x_1(n) 通过系统后的输出为 y1(n)y_1(n),输入 x2(n)x_2(n) 通过系统后的输出为 y2(n)y_2(n),即:

y1(n)=T[x1(n)],y2(n)=T[x2(n)]y_1(n)=T[x_1(n)],\qquad y_2(n)=T[x_2(n)]

若系统是线性的,它必须同时满足可加性和齐次性。

可加性表示:

T[x1(n)+x2(n)]=y1(n)+y2(n)T[x_1(n)+x_2(n)]=y_1(n)+y_2(n)

齐次性表示:

T[ax1(n)]=ay1(n)T[a x_1(n)]=a y_1(n)

把这两条合起来,就是更常用的线性叠加形式:

T[m1x1(n)+m2x2(n)]=m1y1(n)+m2y2(n)T[m_1x_1(n)+m_2x_2(n)]=m_1y_1(n)+m_2y_2(n)

也就是说,加权信号和的响应,等于各个响应的加权和。换句话说,先把输入加权相加再送入系统,与先分别通过系统再加权相加,结果应当一致。


线性判断例题:为什么 y(n)=ax(n)+by(n)=ax(n)+b 不是线性系统

考虑系统:

y(n)=ax(n)+by(n)=a x(n)+b

其中 aabb 是常数。很多初学者看到 ax(n)a x(n) 会以为它是线性的,但常数项 bb 会破坏线性性质。

设两个输入分别为 x1(n)x_1(n)x2(n)x_2(n),对应输出为:

y1(n)=ax1(n)+by_1(n)=a x_1(n)+b y2(n)=ax2(n)+by_2(n)=a x_2(n)+b

若构造加权输入:

x3(n)=m1x1(n)+m2x2(n)x_3(n)=m_1x_1(n)+m_2x_2(n)

系统输出为:

y3(n)=a[m1x1(n)+m2x2(n)]+by_3(n)=a[m_1x_1(n)+m_2x_2(n)]+b

即:

y3(n)=am1x1(n)+am2x2(n)+by_3(n)=am_1x_1(n)+am_2x_2(n)+b

但是响应的加权和为:

m1y1(n)+m2y2(n)=am1x1(n)+am2x2(n)+(m1+m2)bm_1y_1(n)+m_2y_2(n)=am_1x_1(n)+am_2x_2(n)+(m_1+m_2)b

一般情况下,b(m1+m2)bb\neq (m_1+m_2)b,所以两者不相等。因此该系统不是线性系统。

从直观上看,线性系统必须满足“零输入对应零输出”。当 x(n)=0x(n)=0 时,该系统输出为 bb。若 b0b\neq 0,零输入仍有非零输出,因此不可能是线性系统。


时不变系统:系统特性不随时间改变

如果系统对输入信号的运算关系在整个过程中不随时间变化,或者说系统对输入信号的响应与信号加到系统的时间无关,那么这个系统称为时不变系统。

设:

y(n)=T[x(n)]y(n)=T[x(n)]

若输入延迟 n0n_0 个采样点后,输出也只延迟同样的 n0n_0 个采样点,即:

y(nn0)=T[x(nn0)]y(n-n_0)=T[x(n-n_0)]

则系统是时不变系统。

通俗地说,今天把同样的信号送进系统,明天再把同样的信号送进系统,如果系统本身没有变,那么输出的形状也不应该变,只是整体发生了时间平移。


时不变判断:y(n)=ax(n)+by(n)=ax(n)+by(n)=nx(n)y(n)=nx(n)

系统:

y(n)=ax(n)+by(n)=a x(n)+b

是时不变系统。因为若输入变成 x(nd)x(n-d),输出变为:

T[x(nd)]=ax(nd)+bT[x(n-d)]=a x(n-d)+b

这正好等于原输出整体延迟后的形式:

y(nd)=ax(nd)+by(n-d)=a x(n-d)+b

所以该系统虽然不是线性系统,但它是时不变系统。

再看系统:

y(n)=nx(n)y(n)=n x(n)

这里的系数 nn 会随时间变化。若输入延迟,系统乘上的时间系数也发生变化,因此不能简单看作输出延迟。于是该系统是时变系统。

这一组例子说明:线性和时不变是两个不同概念。一个系统可以时不变但不线性,也可以线性但时变。只有同时满足线性和时不变的系统,才称为 LTI 系统。


线性时不变系统:LTI 的工程意义

LTI 是 Linear Time-Invariant 的缩写,即线性时不变系统。它是数字信号处理中最重要的一类系统,因为它既有良好的数学性质,又能近似描述大量工程系统。

一个简单的机械例子是质量-弹簧-阻尼系统。当质量为 mm,阻尼系数为 cc,弹性系数为 kk,外力输入为 uu,位移为 qq 时,可以写成:

mq¨+cq˙+kq=um\ddot q+c\dot q+kq=u

如果 m,c,km,c,k 都是常数,那么系统参数不随时间变化,该系统可看作线性时不变系统。

如果阻尼系数变成 c(t)c(t),则方程变为:

mq¨+c(t)q˙+kq=um\ddot q+c(t)\dot q+kq=u

这时系统参数随时间变化,因此系统成为线性时变系统。

这个例子提醒我们:判断时不变性时,不是看输入有没有变化,而是看系统自身的规则、参数和结构是否随时间改变。


LTI 系统的冲激响应:一个系统的“身份证”

单位脉冲响应是指系统对单位冲激序列 δ(n)\delta(n) 的零状态响应,记为:

h(n)=T[δ(n)]h(n)=T[\delta(n)]

对 LTI 系统来说,冲激响应极其重要。只要知道了系统的 h(n)h(n),就能求任意输入 x(n)x(n) 对应的输出:

y(n)=x(n)h(n)y(n)=x(n)*h(n)

LTI系统与卷积关系

为什么可以这样做?因为任意序列都可以分解成一组延迟冲激序列的加权和:

x(n)=k=x(k)δ(nk)x(n)=\sum_{k=-\infty}^{\infty}x(k)\delta(n-k)

由于系统线性,输入的加权和对应输出的加权和。由于系统时不变,δ(nk)\delta(n-k) 的响应就是 h(nk)h(n-k)。于是:

y(n)=k=x(k)h(nk)y(n)=\sum_{k=-\infty}^{\infty}x(k)h(n-k)

这正是卷积和:

y(n)=x(n)h(n)y(n)=x(n)*h(n)

所以,LTI 系统分析的核心就是冲激响应和卷积。


系统的级联与并联

LTI 系统有两个非常重要的连接方式:级联和并联。

级联表示一个系统的输出再进入另一个系统。若两个系统的冲激响应分别为 h1(n)h_1(n)h2(n)h_2(n),则等效系统的冲激响应为:

h(n)=h1(n)h2(n)h(n)=h_1(n)*h_2(n)

并联表示同一个输入同时进入两个系统,两个系统的输出再相加。此时等效系统的冲激响应为:

h(n)=h1(n)+h2(n)h(n)=h_1(n)+h_2(n)

系统级联与并联

这两个性质在滤波器设计中很常见。复杂滤波器可以由多个简单滤波器级联或并联组成,通过冲激响应的卷积或相加得到整体系统特性。


因果系统:输出不能提前知道未来

因果性表示系统只有在信号激励之后才产生响应,也称为不超前响应系统。

通俗地说,因果系统不能依赖未来输入。例如:

y(n)=x(n)+x(n1)y(n)=x(n)+x(n-1)

是因果系统,因为输出只用到了当前输入和过去输入。

而:

y(n)=x(n+1)y(n)=x(n+1)

不是因果系统,因为它需要提前知道未来一个采样点的输入。

对 LTI 系统来说,因果性的充要条件为:

h(n)=0,n<0h(n)=0,\quad n<0

也就是说,单位冲激发生在 n=0n=0 时,系统不能在 n<0n<0 就出现响应。

判断因果性有两种方法:一种是直接根据定义判断系统输出是否依赖未来输入;另一种是对 LTI 系统使用冲激响应条件 h(n)=0,n<0h(n)=0,n<0。后者只对 LTI 系统有效。


稳定系统:有界输入必须产生有界输出

稳定性通常采用 BIBO 稳定定义,即 bounded input, bounded output。它的意思是:只要输入幅度有界,输出幅度也必须有界。

对 LTI 系统来说,稳定的充分必要条件是单位脉冲响应绝对可和:

n=h(n)<\sum_{n=-\infty}^{\infty}|h(n)|<\infty

因果性与稳定性的直观图像

这个条件很好理解。因为 LTI 系统输出为卷积:

y(n)=k=x(k)h(nk)y(n)=\sum_{k=-\infty}^{\infty}x(k)h(n-k)

如果输入 x(k)x(k) 有界,而 h(n)h(n) 的绝对和有限,那么输出不会无限增长。反之,如果冲激响应的绝对和发散,就可能存在某些有界输入使输出发散。


因果稳定例题:h(n)=anu(n)h(n)=a^n u(n)

设 LTI 系统的单位脉冲响应为:

h(n)=anu(n)h(n)=a^n u(n)

其中 aa 是实数。

先判断因果性。因为 u(n)u(n)n<0n<0 时为 0,所以:

h(n)=0,n<0h(n)=0,\quad n<0

因此系统是因果系统。

再判断稳定性:

n=h(n)=n=0an\sum_{n=-\infty}^{\infty}|h(n)|=\sum_{n=0}^{\infty}|a|^n

这是一个等比级数。当 a<1|a|<1 时,级数收敛:

n=0an=11a\sum_{n=0}^{\infty}|a|^n=\frac{1}{1-|a|}

a1|a|\geq 1 时,级数发散。因此:

a<1系统稳定|a|<1\quad \Rightarrow \quad \text{系统稳定} a1系统不稳定|a|\geq 1\quad \Rightarrow \quad \text{系统不稳定}

差分方程:离散系统的输入输出描述

离散时间系统常用线性常系数差分方程描述。一般形式为:

i=0Naiy(ni)=j=0Mbjx(nj),a0=1\sum_{i=0}^{N}a_i y(n-i)=\sum_{j=0}^{M}b_j x(n-j),\qquad a_0=1

其中 x(n)x(n) 是输入序列,y(n)y(n) 是输出序列,aia_ibjb_j 是常数。

差分方程的递推思想

差分方程的含义是:当前输出可以由过去输出、当前输入和过去输入共同决定。例如:

y(n)=ay(n1)+x(n)y(n)=ay(n-1)+x(n)

表示当前输出等于前一时刻输出乘以 aa,再加上当前输入。

线性常系数差分方程常见的求解方法有三种。

经典解法类似连续系统中解微分方程的方法,但实际中较少采用。

递推解法最直接,只要给出初始条件,就可以从某个时刻开始一步步算出输出数值。它方法简单,但不一定容易直接得到通项公式。

变换域法主要指 Z 变换求解,方法简便有效,是后续课程重点。


递推例题:零初始条件下的冲激响应

设系统由差分方程:

y(n)=ay(n1)+x(n)y(n)=ay(n-1)+x(n)

描述,输入为:

x(n)=δ(n)x(n)=\delta(n)

若初始条件为:

y(1)=0y(-1)=0

求输出 y(n)y(n)

因为输入是单位冲激,所以输出就是系统的单位脉冲响应。根据差分方程逐点递推:

n=0n=0 时:

y(0)=ay(1)+δ(0)=0+1=1y(0)=ay(-1)+\delta(0)=0+1=1

n=1n=1 时:

y(1)=ay(0)+δ(1)=ay(1)=ay(0)+\delta(1)=a

n=2n=2 时:

y(2)=ay(1)+δ(2)=a2y(2)=ay(1)+\delta(2)=a^2

继续递推可得:

y(n)=an,n0y(n)=a^n,\quad n\geq 0

写成带单位阶跃序列的形式:

y(n)=anu(n)y(n)=a^n u(n)

这个结果说明,在零初始条件下,单位冲激输入激发出一个指数型响应。


初始条件改变后,系统输出也会改变

仍然考虑:

y(n)=ay(n1)+x(n),x(n)=δ(n)y(n)=ay(n-1)+x(n),\qquad x(n)=\delta(n)

若初始条件改为:

y(1)=1y(-1)=1

则:

n=0n=0 时:

y(0)=ay(1)+δ(0)=a+1y(0)=ay(-1)+\delta(0)=a+1

n=1n=1 时:

y(1)=ay(0)+δ(1)=a(1+a)y(1)=ay(0)+\delta(1)=a(1+a)

n=2n=2 时:

y(2)=ay(1)+δ(2)=a2(1+a)y(2)=ay(1)+\delta(2)=a^2(1+a)

所以:

y(n)=(1+a)anu(n)y(n)=(1+a)a^n u(n)

这个例子说明,差分方程给出了系统运算关系,但具体输出还受到初始条件影响。初始条件不同,递推出的序列也不同。


非因果解:差分方程本身不能决定因果性

仍然考虑差分方程:

y(n)=ay(n1)+x(n),x(n)=δ(n)y(n)=ay(n-1)+x(n),\qquad x(n)=\delta(n)

如果附加条件为:

y(n)=0,n>0y(n)=0,\quad n>0

则可以把方程改写为:

y(n1)=a1[y(n)δ(n)]y(n-1)=a^{-1}[y(n)-\delta(n)]

从未来条件向过去递推。

n=1n=1 时:

y(0)=a1[y(1)δ(1)]=0y(0)=a^{-1}[y(1)-\delta(1)]=0

n=0n=0 时:

y(1)=a1[y(0)δ(0)]=a1y(-1)=a^{-1}[y(0)-\delta(0)]=-a^{-1}

n=1n=-1 时:

y(2)=a1[y(1)δ(1)]=a2y(-2)=a^{-1}[y(-1)-\delta(-1)]=-a^{-2}

所以:

y(n)=an1,n<0y(n)=-a^{n-1},\quad n<0

此时系统在冲激发生之前已经出现响应,因此它是非因果系统。

结论是:差分方程本身不能确定系统一定是因果还是非因果,还必须结合初始条件或边界条件进行判断。


课堂练习整理:因果性、稳定性与卷积

练习一:已知 LTI 系统的单位脉冲响应为 h(n)h(n),判断因果性和稳定性。

若:

h(n)=δ(n+4)h(n)=\delta(n+4)

该冲激出现在 n=4n=-4,也就是单位冲激输入之前已有响应,所以系统非因果。但它只有一个非零点,绝对和有限,因此稳定。

若:

h(n)=0.3nu(n1)h(n)=0.3^n u(-n-1)

由于 u(n1)u(-n-1)n1n\leq -1 时为 1,所以响应位于负时间范围,系统非因果。并且当 nn\to -\infty 时,0.3n0.3^n 会无限增大,绝对和发散,因此不稳定。

练习二:已知:

x1(n)=δ(n)+3δ(n1)+2δ(n2)x_1(n)=\delta(n)+3\delta(n-1)+2\delta(n-2) x2(n)=u(n)u(n3)x_2(n)=u(n)-u(n-3)

因为 x2(n)x_2(n) 是长度为 3 的矩形序列:

x2(n)={1,1,1}x_2(n)=\{1,1,1\}

x1(n)={1,3,2}x_1(n)=\{1,3,2\},卷积结果为:

x(n)=x1(n)x2(n)={1,4,6,5,2}x(n)=x_1(n)*x_2(n)=\{1,4,6,5,2\}

计算思路是滑动相乘求和:开头只有 11,中间重叠逐渐增多,最后重叠逐渐减少。

练习三:一个系统是因果系统的充要条件是单位冲激响应序列 h(n)h(n) 是因果序列。这个说法对 LTI 系统成立。也就是:

h(n)=0,n<0h(n)=0,\quad n<0

练习四:将有限长序列 x(n)x(n) 表示为加权延迟冲激序列之和。若非零点在 n=1,0,1,2,3n=-1,0,1,2,3,则:

x(n)=x(1)δ(n+1)+x(0)δ(n)+x(1)δ(n1)+x(2)δ(n2)+x(3)δ(n3)x(n)=x(-1)\delta(n+1)+x(0)\delta(n)+x(1)\delta(n-1)+x(2)\delta(n-2)+x(3)\delta(n-3)

也可以写成:

x(n)=k=13x(k)δ(nk)x(n)=\sum_{k=-1}^{3}x(k)\delta(n-k)

这正是“任意序列可以分解为冲激加权和”的思想。


课堂练习整理:周期序列、矩形序列和判断题

判断序列是否周期时,关键看数字角频率是否满足:

2πω0Q\frac{2\pi}{\omega_0}\in \mathbb{Q}

若是有理数,则离散正弦或复指数序列是周期序列;若是无理数,则不是周期序列。

例如:

x(n)=Acos(3π7nπ8)x(n)=A\cos\left(\frac{3\pi}{7}n-\frac{\pi}{8}\right)

这里 ω0=3π7\omega_0=\frac{3\pi}{7},所以:

2πω0=143\frac{2\pi}{\omega_0}=\frac{14}{3}

这是有理数,因此序列周期存在。取最小整数周期为:

N=14N=14

而:

x(n)=ej(18nπ)x(n)=e^{j(\frac{1}{8}n-\pi)}

其数字角频率为 ω0=18\omega_0=\frac{1}{8},于是:

2πω0=16π\frac{2\pi}{\omega_0}=16\pi

这是无理数,因此序列不是周期序列。

再看卷积练习。若:

h(n)=R4(n),x(n)=R5(n)h(n)=R_4(n),\qquad x(n)=R_5(n)

两者都是有限长矩形序列。卷积结果为:

y(n)={1,2,3,4,4,3,2,1}y(n)=\{1,2,3,4,4,3,2,1\}

这可以理解为两个矩形序列滑动重叠时,重叠长度先增加、保持、再减少。

若:

h(n)=2R4(n),x(n)=δ(n)δ(n2)h(n)=2R_4(n),\qquad x(n)=\delta(n)-\delta(n-2)

利用冲激卷积性质:

h(n)δ(n)=h(n)h(n)*\delta(n)=h(n) h(n)δ(n2)=h(n2)h(n)*\delta(n-2)=h(n-2)

所以:

y(n)=h(n)h(n2)={2,2,0,0,2,2}y(n)=h(n)-h(n-2)=\{2,2,0,0,-2,-2\}

再整理几个基础判断。

数字信号是时间和幅度都离散的信号。

若:

x(n)={2n,0n40,其他x(n)=\begin{cases}2^n,&0\leq n\leq 4\\0,&\text{其他}\end{cases}

则可以写成:

x(n)=δ(n)+2δ(n1)+4δ(n2)+8δ(n3)+16δ(n4)x(n)=\delta(n)+2\delta(n-1)+4\delta(n-2)+8\delta(n-3)+16\delta(n-4)

序列 x(n)=Acos(nω0+φ)x(n)=A\cos(n\omega_0+\varphi) 是周期序列的条件是:

2πω0 是有理数\frac{2\pi}{\omega_0}\text{ 是有理数}

序列 {2,3,2,1}\{2,3,2,1\}{2,3,5,2,1}\{2,3,5,2,1\} 相加,缺失位置按 0 补齐,可得:

{4,6,7,3,1}\{4,6,7,3,1\}

逐项相乘时,只在共同长度范围内相乘,结果为:

{4,9,10,2}\{4,9,10,2\}

“数字信号处理的主要对象是数字信号,且采用数值运算的方法达到处理目的”是正确的。

“单位阶跃序列与矩形序列的关系是 RN(n)=u(nN)u(n)R_N(n)=u(n-N)-u(n)”是错误的。正确关系是:

RN(n)=u(n)u(nN)R_N(n)=u(n)-u(n-N)

“因果系统一定是稳定系统”是错误的。因果性和稳定性是不同性质,一个系统可以因果但不稳定。

“系统运算关系在整个过程中不随时间变化,则称为时不变系统”是正确的。

“稳定系统是有界输入、有界输出系统”是正确的。

“差分方程本身能确定系统因果性和稳定性”是错误的。差分方程还需要结合初始条件、边界条件和系统实现方式判断。


递推练习:由差分方程求单位脉冲响应

设 LTI 系统由差分方程:

y(n)=12y(n1)+x(n)+12x(n1)y(n)=\frac{1}{2}y(n-1)+x(n)+\frac{1}{2}x(n-1)

描述,且系统因果。要求系统单位脉冲响应。

单位脉冲响应对应输入:

x(n)=δ(n)x(n)=\delta(n)

于是:

h(n)=12h(n1)+δ(n)+12δ(n1)h(n)=\frac{1}{2}h(n-1)+\delta(n)+\frac{1}{2}\delta(n-1)

因为系统因果,所以:

h(n)=0,n<0h(n)=0,\quad n<0

n=0n=0 时:

h(0)=12h(1)+δ(0)+12δ(1)=1h(0)=\frac{1}{2}h(-1)+\delta(0)+\frac{1}{2}\delta(-1)=1

n=1n=1 时:

h(1)=12h(0)+δ(1)+12δ(0)=12+12=1h(1)=\frac{1}{2}h(0)+\delta(1)+\frac{1}{2}\delta(0)=\frac{1}{2}+\frac{1}{2}=1

n=2n=2 时:

h(2)=12h(1)=12h(2)=\frac{1}{2}h(1)=\frac{1}{2}

n=3n=3 时:

h(3)=12h(2)=(12)2h(3)=\frac{1}{2}h(2)=\left(\frac{1}{2}\right)^2

所以:

h(n)=δ(n)+(12)n1u(n1)h(n)=\delta(n)+\left(\frac{1}{2}\right)^{n-1}u(n-1)

这个结果由两部分组成:n=0n=0 处的直接冲激响应,以及 n1n\geq 1 的指数衰减尾部。


傅里叶分析:从时域走向频域

傅里叶分析的思想源于对热传导问题的研究。傅里叶发现,许多函数可以表示成三角函数构成的无穷级数。后来这一思想发展成傅里叶级数、傅里叶变换和频谱分析。

在信号处理中,频谱分析是指把信号表示为不同频率正弦分量或复指数分量的加权和,也称为信号的谱分析。

傅里叶分析则是用频谱分析的观点来分析信号和系统,也称为系统的频域分析。

频域分析非常重要,主要原因有三点。

第一,它容易推广到复频域分析,并与拉普拉斯变换、Z 变换建立联系。

第二,它能够清楚解释信号失真、滤波、调制等实际问题。比如音频中的低音、中音和高音,本质上就是不同频率成分。

第三,它可以简化微分方程或差分方程的求解。在时域中复杂的卷积或微分,到了频域中往往变成乘法或代数运算。

频谱成分示意


不同频率成分:低频、中频与高频

一个复杂信号通常不是单一频率,而是由多种频率成分组成。以声音为例,低频部分对应浑厚的低音,中频部分对应主要旋律和人声,高频部分对应明亮感、细节和噪声。

从频谱角度看,一个信号可以被拆成很多频率分量。每个频率分量有自己的幅度和相位。幅度表示这个频率在信号中占多大比重,相位表示这个频率分量相对于参考位置偏移了多少。

这就是频谱分析最直观的意义:时域图像告诉我们信号随时间怎样变化,频域图像告诉我们信号由哪些频率组成。


简谐振动、调幅和调频

简谐振动是最基本的周期运动,例如理想弹簧振子的运动。它可以用正弦函数或余弦函数表示:

x(t)=Acos(ωt+φ)x(t)=A\cos(\omega t+\varphi)

其中 AA 是幅度,ω\omega 是角频率,φ\varphi 是初相位。

调幅信号 AM 的特点是载波频率较高,但振幅随低频信号变化。直观上看,它像一条高频振荡曲线被一个低频包络线控制。

调频信号 FM 的特点是振幅大体不变,但瞬时频率随信号变化。直观上看,波形有的地方变密,有的地方变疏。

AM 和 FM 的例子说明,现实信号中的信息常常不是直接体现在单一波形上,而是体现在幅度、频率或相位随时间变化的方式中。傅里叶分析正是理解这些变化的重要工具。


从泰勒级数到傅里叶级数

泰勒级数用幂函数展开函数,基本形式是:

f(x)=f(x0)+f(x0)(xx0)+f(x0)2!(xx0)2+f(x)=f(x_0)+f'(x_0)(x-x_0)+\frac{f''(x_0)}{2!}(x-x_0)^2+\cdots

它的思想是用 1,(xx0),(xx0)2,1,(x-x_0),(x-x_0)^2,\dots 这类幂函数作为基本积木来表示函数。

傅里叶级数则使用正弦和余弦作为基本积木。三角函数形式的傅里叶级数可以写成:

f(t)=a02+n=1[ancos(nωt)+bnsin(nωt)]f(t)=\frac{a_0}{2}+\sum_{n=1}^{\infty}\left[a_n\cos(n\omega t)+b_n\sin(n\omega t)\right]

其中:

an=2Tt0t0+Tf(t)cos(nωt)dta_n=\frac{2}{T}\int_{t_0}^{t_0+T}f(t)\cos(n\omega t)dt bn=2Tt0t0+Tf(t)sin(nωt)dtb_n=\frac{2}{T}\int_{t_0}^{t_0+T}f(t)\sin(n\omega t)dt

如果说泰勒级数是在局部用多项式逼近函数,那么傅里叶级数是在一个周期内用不同频率的正弦、余弦组合表示函数。


复指数形式的傅里叶级数

利用欧拉公式:

ejθ=cosθ+jsinθe^{j\theta}=\cos\theta+j\sin\theta

正弦和余弦可以统一写成复指数形式。因此傅里叶级数也可以写成更紧凑的形式:

x(t)=k=akejkω0tx(t)=\sum_{k=-\infty}^{\infty}a_k e^{jk\omega_0t}

其中 ω0\omega_0 是基波角频率,kω0k\omega_0 是第 kk 次谐波。

这里的“基波”就是最低的基本频率,“谐波”就是基波频率的整数倍。例如基波为 ω0\omega_0,那么二次谐波是 2ω02\omega_0,三次谐波是 3ω03\omega_0

复指数形式的优点是公式更统一,正频率和负频率可以自然出现,后续推导傅里叶变换、系统频率响应时也更方便。


用傅里叶级数逼近方波

方波虽然看起来是突变的矩形波,但它可以由一系列正弦波叠加逼近。典型展开形式包含奇次谐波:

4πsinθ+43πsin3θ+45πsin5θ+47πsin7θ+\frac{4}{\pi}\sin\theta+\frac{4}{3\pi}\sin3\theta+\frac{4}{5\pi}\sin5\theta+\frac{4}{7\pi}\sin7\theta+\cdots

每加入一个更高次谐波,波形就更接近方波。低次谐波决定主要形状,高次谐波负责补充边缘和突变细节。

方波的傅里叶级数逼近

这也解释了频谱和信号细节之间的关系。突变越明显的信号,通常需要越多高频成分才能准确表示。若高频成分被滤掉,方波边缘就会变得圆滑。


周期信号的复指数傅里叶级数

设周期信号为 f(t)f(t),周期为 TT,基波角频率为:

Ω0=2πT\Omega_0=\frac{2\pi}{T}

则该信号可以展开为复指数形式的傅里叶级数:

f(t)=n=FnejnΩ0tf(t)=\sum_{n=-\infty}^{\infty}F_n e^{jn\Omega_0t}

其中傅里叶系数为:

Fn=1TT/2T/2f(t)ejnΩ0tdt,n=0,±1,±2,F_n=\frac{1}{T}\int_{-T/2}^{T/2}f(t)e^{-jn\Omega_0t}dt,\qquad n=0,\pm1,\pm2,\cdots

傅里叶系数 FnF_n 一般是复数。它包含两个信息:模长表示对应频率分量的幅度,相角表示对应频率分量的相位。


周期矩形脉冲信号的傅里叶系数

考虑一个周期矩形脉冲信号,在一个周期内的脉冲宽度为 τ\tau,高度为 AA,周期为 TT。把它代入复指数傅里叶系数公式,可以得到:

Fn=AτTSa(nΩ0τ2)F_n=\frac{A\tau}{T}\operatorname{Sa}\left(\frac{n\Omega_0\tau}{2}\right)

其中:

Sa(x)=sinxx\operatorname{Sa}(x)=\frac{\sin x}{x}

因此,该周期矩形脉冲可以写成:

f(t)=n=FnejnΩ0tf(t)=\sum_{n=-\infty}^{\infty}F_n e^{jn\Omega_0t}

这个例子非常经典。它说明矩形脉冲的频谱不是随便分布的,而是由 Sa\operatorname{Sa} 函数控制。脉冲越窄,频谱越宽;脉冲越宽,频谱越窄。这体现了时域宽度和频域宽度之间的互补关系。


Sa 函数与 sinc 函数

在本讲中出现的抽样函数写作:

Sa(t)=sintt\operatorname{Sa}(t)=\frac{\sin t}{t}

也常称为 sinc 函数的一种定义。

它有几个重要性质。

t0t\to0 时:

limt0Sa(t)=1\lim_{t\to0}\operatorname{Sa}(t)=1

这是因为 limt0sintt=1\lim_{t\to0}\frac{\sin t}{t}=1

t=nπt=n\pi,且 n=±1,±2,±3,n=\pm1,\pm2,\pm3,\cdots 时:

Sa(t)=0\operatorname{Sa}(t)=0

它是偶函数:

Sa(t)=Sa(t)\operatorname{Sa}(-t)=\operatorname{Sa}(t)

并且当 t|t|\to\infty 时,它逐渐趋于 0。

Sa 函数在矩形脉冲频谱和理想采样恢复中都会出现,是傅里叶分析与采样理论之间的一座桥梁。


周期信号的频谱:幅度谱与相位谱

为了方便表示一个信号中包含哪些频率分量,以及每个分量所占比重,可以使用频谱图。

在傅里叶分析中,各个分量的幅度随频率变化的图像称为幅度谱;各个分量的相位随频率变化的图像称为相位谱。幅度谱和相位谱统称为频谱。

三角形式的傅里叶级数通常只写非负频率,因此对应单边谱。

复指数形式的傅里叶级数包含正频率和负频率,因此对应双边谱。

对于周期矩形脉冲信号,其傅里叶系数为:

Fn=AτTSa(nΩ0τ2)F_n=\frac{A\tau}{T}\operatorname{Sa}\left(\frac{n\Omega_0\tau}{2}\right)

所以它的谱线幅度受 Sa 函数包络控制。


sin 与 cos 的复指数表示

欧拉公式给出了正弦、余弦和复指数之间的关系:

cos(ωt)=12ejωt+12ejωt\cos(\omega t)=\frac{1}{2}e^{j\omega t}+\frac{1}{2}e^{-j\omega t} sin(ωt)=12j(ejωtejωt)\sin(\omega t)=\frac{1}{2j}\left(e^{j\omega t}-e^{-j\omega t}\right)

这说明,一个余弦信号可以看作正频率和负频率两个复指数分量的叠加;一个正弦信号也可以看作正负频率复指数分量的组合,只是系数带有 jj


频谱例题:识别频率、幅度和相位

考虑信号:

x(t)=cos(2π15tπ/4)sin(2π40t)x(t)=\cos(2\pi\cdot15t-\pi/4)-\sin(2\pi\cdot40t)

这个信号由两个频率成分组成:15 Hz 和 40 Hz。

第一项 cos(2π15tπ/4)\cos(2\pi\cdot15t-\pi/4) 的频率为 15 Hz,相位为 π/4-\pi/4

第二项 sin(2π40t)-\sin(2\pi\cdot40t) 的频率为 40 Hz。由于正弦可以转化为余弦形式或复指数形式,因此它也对应一组正负频率谱线。按照讲义中的复指数表达,相关相位可以写成 π/2\pi/2 的形式。

这个例子的重点不是复杂计算,而是学会从时域表达式中识别频率成分。看到 2πft2\pi f t,就知道对应频率为 ff Hz。


从傅里叶级数到傅里叶变换

傅里叶级数用于周期信号。如果周期 TT 趋于无穷大,信号要经过无限长时间才重复,此时可以看作非周期信号。

TT 增大时,基波频率变小,频谱谱线变密,谱线幅度变小,但频谱形状保持。极限情况下,离散谱线连成连续频谱,这就引出了傅里叶变换。

从傅里叶级数到傅里叶变换

傅里叶变换对为:

F(jΩ)=f(t)ejΩtdtF(j\Omega)=\int_{-\infty}^{\infty}f(t)e^{-j\Omega t}dt f(t)=12πF(jΩ)ejΩtdΩf(t)=\frac{1}{2\pi}\int_{-\infty}^{\infty}F(j\Omega)e^{j\Omega t}d\Omega

常用记号为:

f(t)F(jΩ)f(t)\leftrightarrow F(j\Omega)

傅里叶级数解决周期信号的频谱表示,傅里叶变换解决非周期信号的频谱表示。


典型信号的傅里叶变换:矩形脉冲

对于高度为 AA、宽度为 τ\tau 的矩形脉冲,若它在 [τ/2,τ/2][-\tau/2,\tau/2] 内取值为 AA,其他位置为 0,则傅里叶变换为:

F(jΩ)=τ/2τ/2AejΩtdtF(j\Omega)=\int_{-\tau/2}^{\tau/2}A e^{-j\Omega t}dt

计算可得:

F(jΩ)=AτSa(Ωτ2)F(j\Omega)=A\tau\operatorname{Sa}\left(\frac{\Omega\tau}{2}\right)

这说明矩形脉冲的频谱是 Sa 函数形状。主瓣宽度与脉冲宽度有关:时域脉冲越窄,频域主瓣越宽;时域脉冲越宽,频域主瓣越窄。


傅里叶变换的卷积性质

傅里叶变换有两个非常重要的卷积性质。

若:

f1(t)F1(jΩ),f2(t)F2(jΩ)f_1(t)\leftrightarrow F_1(j\Omega),\qquad f_2(t)\leftrightarrow F_2(j\Omega)

则时域卷积对应频域相乘:

f1(t)f2(t)F1(jΩ)F2(jΩ)f_1(t)*f_2(t)\leftrightarrow F_1(j\Omega)F_2(j\Omega)

时域相乘对应频域卷积:

f1(t)f2(t)12πF1(jΩ)F2(jΩ)f_1(t)f_2(t)\leftrightarrow \frac{1}{2\pi}F_1(j\Omega)*F_2(j\Omega)

这就是为什么滤波器在频域中容易理解。时域中输入信号和系统冲激响应卷积,频域中只需要把输入频谱和系统频率响应相乘。


与拉普拉斯变换的联系

拉普拉斯变换可以写成:

F(s)=f(t)estdtF(s)=\int_{-\infty}^{\infty}f(t)e^{-st}dt

其反变换形式为:

f(t)=12πjσjσ+jF(s)estdsf(t)=\frac{1}{2\pi j}\int_{\sigma-j\infty}^{\sigma+j\infty}F(s)e^{st}ds

其中:

s=σ+jΩs=\sigma+j\Omega

若考虑实际因果信号,常采用单边拉普拉斯变换,积分下限从 00^- 开始。

傅里叶变换可以看作拉普拉斯变换在虚轴 s=jΩs=j\Omega 上的一种特殊情况。后续学习系统稳定性、频率响应和 Z 变换时,这种联系会非常重要。


模拟信号数字处理:为什么要采样

模拟信号数字处理要解决四个问题:什么是采样;采样前的模拟信号和采样后信号之间的频谱关系;如何由采样信号恢复原模拟信号;实际工程中如何把时域离散信号恢复成模拟信号。

所谓采样,就是每隔固定时间 TT 从连续信号 x(t)x(t) 中取一个值,形成离散序列:

x[n]=x(nT)x[n]=x(nT)

采样周期为 TT,采样频率为:

fs=1Tf_s=\frac{1}{T}

采样角频率为:

Ωs=2πfs\Omega_s=2\pi f_s

为什么要把模拟信号采样成数字信号?主要有几个原因。

数字信号稳定性好,因为数据用二进制表示,受外界干扰影响较小。

数字信号可靠性高,便于存储和传输。

数字信号处理简便,便于实现压缩、编码、加密、滤波、识别等算法。

数字系统精度高,可以通过增加字长提高数值精度。

数字系统灵活性强,改变程序或系统系数就能实现不同功能。


实际采样与理想采样

实际采样可以理解为一个电子开关。模拟信号 xa(t)x_a(t) 通过电子开关,开关每隔周期 TT 闭合一次,每次闭合时间为 τ\tau,其中 τT\tau\ll T。开关输出端得到采样信号。

如果让开关闭合时间 τ0\tau\to0,就得到理想采样。理想采样可以表示为模拟信号乘以冲激串:

x^a(t)=xa(t)pδ(t)\hat{x}_a(t)=x_a(t)p_\delta(t)

其中冲激串为:

pδ(t)=n=δ(tnT)p_\delta(t)=\sum_{n=-\infty}^{\infty}\delta(t-nT)

利用冲激函数抽样性,可以写成:

x^a(t)=n=xa(nT)δ(tnT)\hat{x}_a(t)=\sum_{n=-\infty}^{\infty}x_a(nT)\delta(t-nT)

这说明理想采样信号不是普通连续波形,而是一串带权冲激。每个冲激位于 t=nTt=nT,权值为原模拟信号在该采样时刻的值。


理想采样信号的频谱

设:

X^a(jΩ)=FT[x^a(t)]\hat X_a(j\Omega)=FT[\hat x_a(t)] Xa(jΩ)=FT[xa(t)]X_a(j\Omega)=FT[x_a(t)] Pδ(jΩ)=FT[pδ(t)]P_\delta(j\Omega)=FT[p_\delta(t)]

冲激串 pδ(t)p_\delta(t) 可以展开为复指数傅里叶级数:

pδ(t)=1Tk=ejkΩstp_\delta(t)=\frac{1}{T}\sum_{k=-\infty}^{\infty}e^{jk\Omega_s t}

其傅里叶变换为:

Pδ(jΩ)=2πTk=δ(ΩkΩs)P_\delta(j\Omega)=\frac{2\pi}{T}\sum_{k=-\infty}^{\infty}\delta(\Omega-k\Omega_s)

由于理想采样是时域相乘:

x^a(t)=xa(t)pδ(t)\hat{x}_a(t)=x_a(t)p_\delta(t)

根据频域卷积性质:

X^a(jΩ)=12πXa(jΩ)Pδ(jΩ)\hat X_a(j\Omega)=\frac{1}{2\pi}X_a(j\Omega)*P_\delta(j\Omega)

代入冲激串频谱后得到:

X^a(jΩ)=1Tk=Xa[j(ΩkΩs)]\hat X_a(j\Omega)=\frac{1}{T}\sum_{k=-\infty}^{\infty}X_a[j(\Omega-k\Omega_s)]

这条公式非常关键。它说明采样信号的频谱,是原模拟信号频谱以采样角频率 Ωs\Omega_s 为周期进行周期性延拓,并且幅度缩放为 1/T1/T

一句话总结:信号在时域离散化,会导致频域周期化。

采样导致频域周期化


频谱混叠:采样频率不够会发生什么

采样后,原信号频谱会以 Ωs\Omega_s 为间隔重复排列。如果采样频率足够高,各个重复频谱之间不会重叠,可以通过低通滤波器取出中间那一份,从而恢复原信号。

如果采样频率太低,重复频谱会相互重叠,这种现象称为频谱混叠。

一旦发生混叠,不同频率成分会叠加到同一频率位置,导致信息不可逆地混在一起。此时即使后面使用理想低通滤波器,也无法无失真恢复原信号。


采样信号的恢复:理想低通滤波器

设连续信号 xa(t)x_a(t) 是带限信号,最高角频率为 Ωc\Omega_c。如果采样角频率满足:

Ωs2Ωc\Omega_s\geq 2\Omega_c

则可以用理想低通滤波器恢复原模拟信号。

理想低通滤波器的频率响应可以写成:

G(jΩ)={T,Ω<Ωs/20,ΩΩs/2G(j\Omega)=\begin{cases} T,& |\Omega|<\Omega_s/2\\ 0,& |\Omega|\geq \Omega_s/2 \end{cases}

Ωs2Ωc\Omega_s\geq2\Omega_c,采样后的频谱副本不重叠,低通滤波器能取出原频谱,因此恢复得到:

y(t)=xa(t)y(t)=x_a(t)

Ωs<2Ωc\Omega_s<2\Omega_c,频谱发生混叠,恢复结果不等于原信号。


理想低通滤波器的冲激响应与 sinc 插值

理想低通滤波器的单位冲激响应为:

g(t)=12πΩs/2Ωs/2TejΩtdΩg(t)=\frac{1}{2\pi}\int_{-\Omega_s/2}^{\Omega_s/2}T e^{j\Omega t}d\Omega

计算可得:

g(t)=sin(Ωst/2)Ωst/2g(t)=\frac{\sin(\Omega_s t/2)}{\Omega_s t/2}

由于 Ωs=2π/T\Omega_s=2\pi/T,所以:

g(t)=sin(πt/T)πt/Tg(t)=\frac{\sin(\pi t/T)}{\pi t/T}

恢复信号为采样信号与 g(t)g(t) 的卷积:

y(t)=x^a(t)g(t)y(t)=\hat x_a(t)*g(t)

代入理想采样表达式,可得插值公式:

xa(t)=n=xa(nT)sin[π(tnT)/T]π(tnT)/Tx_a(t)=\sum_{n=-\infty}^{\infty}x_a(nT)\frac{\sin[\pi(t-nT)/T]}{\pi(t-nT)/T}

sinc插值恢复示意

这个公式说明:在采样点上,恢复信号的值与原信号相同;在采样点之间,信号由许多 sinc 函数波形延伸叠加而成。


奈奎斯特采样定理

奈奎斯特采样定理可以表述为:

对连续信号进行等间隔采样时,采样信号的频谱是原连续信号频谱以采样频率 Ωs\Omega_s 为周期进行周期性延拓形成的。

若连续信号 xa(t)x_a(t) 是带限信号,最高截止角频率为 Ωc\Omega_c,并且采样角频率满足:

Ωs2Ωc\Omega_s\geq2\Omega_c

那么让采样信号通过一个增益为 TT、截止频率为 Ωs/2\Omega_s/2 的理想低通滤波器,可以唯一恢复原连续信号。

如果:

Ωs<2Ωc\Omega_s<2\Omega_c

则会造成频谱混叠,不可能无失真恢复原连续信号。

课堂判断题中,“若 Ωs<2Ωc\Omega_s<2\Omega_c,仍可通过理想低通滤波器唯一恢复原信号”是错误的。


工程应用:为什么需要抗混叠滤波器

采样定理要求原信号必须是带限信号,但许多实际工程信号并不严格带限。真实信号中常常含有高频噪声、突变成分和干扰成分。

为了避免这些高频成分在采样后折叠到低频区域,采样前通常要加抗混叠低通滤波器。它的作用是滤除高于折叠频率的成分,使进入采样器的信号尽量满足带限条件。

如果直接采样非带限信号,就会产生混叠误差。若采样前用低通滤波器截掉高频成分,则会产生截断误差。工程中常常是在混叠误差和截断误差之间折中。


重要公式汇总

卷积公式:

y(n)=x(n)h(n)=m=x(m)h(nm)y(n)=x(n)*h(n)=\sum_{m=-\infty}^{\infty}x(m)h(n-m)

冲激展开公式:

x(n)=m=x(m)δ(nm)x(n)=\sum_{m=-\infty}^{\infty}x(m)\delta(n-m)

理想采样频谱公式:

X^a(jΩ)=1Tk=Xa[j(ΩkΩs)]\hat X_a(j\Omega)=\frac{1}{T}\sum_{k=-\infty}^{\infty}X_a[j(\Omega-k\Omega_s)]

时域离散信号理想恢复公式:

xa(t)=n=xa(nT)sin[π(tnT)/T]π(tnT)/Tx_a(t)=\sum_{n=-\infty}^{\infty}x_a(nT)\frac{\sin[\pi(t-nT)/T]}{\pi(t-nT)/T}

因果 LTI 系统条件:

h(n)=0,n<0h(n)=0,\quad n<0

稳定 LTI 系统条件:

n=h(n)<\sum_{n=-\infty}^{\infty}|h(n)|<\infty

模拟信号数字处理的完整流程

实际数字信号处理系统通常包含以下步骤。

首先,将输入模拟信号 x(t)x(t) 进行抗混叠滤波,滤掉高于折叠频率的分量,防止频谱混叠。

然后,通过采样和 A/D 转换器,把滤波后的模拟信号转换为数字信号 x(n)x(n)

接着,数字信号处理器对 x(n)x(n) 进行数值运算,得到处理后的数字信号 y(n)y(n)

随后,通过 D/A 转换器,把 y(n)y(n) 转换成模拟信号。

最后,再经过低通滤波器滤除高频分量,得到平滑的模拟输出信号 y(t)y(t)

模拟信号数字处理流程

这个流程可以概括为:

模拟输入 → 抗混叠滤波 → A/D → 数字处理 → D/A → 平滑低通滤波 → 模拟输出


全文总结

本讲从离散时间系统开始,逐步建立了数字信号处理的核心框架。

第一,离散时间系统可以写成 y(n)=T[x(n)]y(n)=T[x(n)]。判断系统性质时,要重点区分线性、时不变、因果和稳定。

第二,LTI 系统最重要的特征是可以用单位脉冲响应 h(n)h(n) 描述。任意输入的输出都可以通过卷积得到:

y(n)=x(n)h(n)y(n)=x(n)*h(n)

第三,差分方程是描述离散系统输入输出关系的重要方法,但差分方程本身不能完全决定系统因果性,还需要结合初始条件或实现方式。

第四,傅里叶分析把信号从时域转到频域,使我们能够理解信号由哪些频率成分组成。周期信号用傅里叶级数,非周期信号用傅里叶变换。

第五,采样会让时域离散化,同时导致频域周期化。只有当采样频率满足奈奎斯特条件,才能避免频谱混叠并通过理想低通滤波器恢复原信号。

第六,实际数字信号处理系统通常由抗混叠滤波、A/D 转换、数字处理、D/A 转换和低通平滑滤波组成。

如果是零基础学习,建议按这个顺序复习:先理解 x(n)x(n)y(n)y(n)T[]T[\cdot];再掌握线性时不变系统的卷积公式;然后理解差分方程递推;最后把傅里叶分析和采样定理联系起来。这样学习数字信号处理时,公式就不再是孤立的符号,而是一条完整的信号处理链路。

Back to archive

Discussion

Comments

Post

Share questions, corrections, or extra notes about this post.