这个专栏主要讲《数字信号处理》的相关知识,我会不定期地更新专栏内容。这门课电子信息相关专业学生的必修课程,重要程度不言而喻!这个专栏的定位在于辅助学习,它拥有课程完整的知识结构,但它绝对无法代替学校的教学,大家可以把它当作一份笔记来学习!
数字信号处理可以看作信号与系统的进阶版,建议有先修信号与系统的同学进行学习。需要说明一点,这个专栏主要是讲数字信号处理理论部分的内容,MATLAB部分的内容就暂时不讲了,如果对MATLAB有疑问可以联系我讨论。
此外,推荐考西电研究生专业课含数字信号处理的同学参考学习,但请结合考纲自行评估重点来学习,不要全部都看浪费时间!
最后,请尊重他人的劳动成果,未经作者允许禁止转载。
配套用书:高西全-数字信号处理-西安电子科技大学出版社(第四版)。
如有疑问,邮件是联系我最快的方式:[email protected]
信号通常是一个自变量或几个自变量的函数。如果仅有一个自变量,则称为一维信号;如果有两个以上的自变量,则称为多维信号。信号按自变量和函数值的连续性可分为:
实际中遇到的信号一般是模拟信号,对它进行等间隔采样便得到时域离散信号。
常用的典型序列是一个重点,请大家认真记忆!
δ ( n ) = { 1 n = 0 0 n ≠ 0 (2-1) \delta { \left( {n} \right) }={ \left\{ {\begin{aligned}{} {1\quad \quad \quad n=0}\\ {0\quad \quad \quad n \neq 0} \end{aligned}}\right. } \tag{2-1} δ(n)={1n=00n=0(2-1)
u ( n ) = { 1 n ≥ 0 0 n < 0 (2-2) u\left( n \right) = \left\{ {\begin{aligned}{} {1\quad \quad \quad n \ge 0}\\ {0\quad \quad \quad n < 0} \end{aligned}} \right. \tag{2-2} u(n)={1n≥00n<0(2-2) δ ( n ) \delta \left( n \right) δ(n)与 u ( n ) u \left( n \right) u(n)的关系: { δ ( n ) = u ( n ) − u ( n − 1 ) u ( n ) = ∑ k = 0 ∞ δ ( n − k ) 或 u ( n ) = ∑ m = − ∞ n δ ( m ) (2-3) \left\{ {\begin{aligned}{} & {\delta \left( n \right) = u\left( n \right) - u\left( {n - 1} \right)} & \\ & {u\left( n \right) = \sum\limits_{k = 0}^\infty {\delta \left( {n - k} \right)} \quad \text{或} \quad u\left( n \right) = \sum\limits_{m = - \infty }^n {\delta \left( m \right)} } & \end{aligned}} \right. \tag{2-3} ⎩⎪⎪⎨⎪⎪⎧δ(n)=u(n)−u(n−1)u(n)=k=0∑∞δ(n−k)或u(n)=m=−∞∑nδ(m)(2-3)
R N ( n ) = { 1 0 ≤ n ≤ N − 1 0 其他 (2-4) {R_N}\left( n \right) = \left\{ {\begin{aligned}{} & {1\;\;\;\;0 \le n \le N - 1} & \\ & {0\;\;\;\; \text{其他}} & \end{aligned}} \right. \tag{2-4} RN(n)={10≤n≤N−10其他(2-4) 其中, N N N 为矩形序列的长度。矩形序列可用单位阶跃序列表示: R N ( n ) = u ( n ) − u ( n − N ) {R_N}\left( n \right) = u\left( n \right) - u\left( {n - N} \right) RN(n)=u(n)−u(n−N)
x ( n ) = a n u ( n ) (2-5) x\left( n \right) = {a^n}u\left( n \right) \tag{2-5} x(n)=anu(n)(2-5) 如果 ∣ a ∣ < 1 \left| a \right| < 1 ∣a∣<1, x ( n ) x\left( n \right) x(n)为收敛序列;如果 ∣ a ∣ > 1 \left| a \right| > 1 ∣a∣>1, x ( n ) x\left( n \right) x(n) 为发散序列。
x ( n ) = sin ( ω n ) (2-6) x\left( n \right) = \sin \left( {\omega n} \right) \tag{2-6} x(n)=sin(ωn)(2-6) 其中, ω \omega ω 为正弦序列的数字频率,单位是弧度(rad)。
如果正弦序列是由模拟信号 x a ( t ) x_a\left( t \right) xa(t)采样得到,则有:
x a ( t ) = sin ( Ω t ) x ( n ) = x a ( t ) ∣ t = n T = sin ( Ω n T ) = sin ( ω n ) \begin{aligned} & {x_a}\left( t \right) = \sin \left( {\Omega t} \right) & \\ & {x\left( n \right) = {\left. {{x_a}\left( t \right)} \right|_{t = nT}} = \sin \left( {\Omega nT} \right) = \sin \left( {\omega n} \right)} & \end{aligned} xa(t)=sin(Ωt)x(n)=xa(t)∣t=nT=sin(ΩnT)=sin(ωn) 其中, T T T为采样间隔 Ω \Omega Ω为模拟角频率。数字频率 ω \omega ω与模拟角频率 Ω \Omega Ω的关系为: ω = Ω T \omega = \Omega T ω=ΩT。
故,凡是由模拟信号采样得到的序列,模拟角频率 ω \omega ω 与序列的数字域频率 Ω \Omega Ω 呈线性关系。由于采样频率 F s F_s Fs 与采样间隔 T T T 互为倒数,因而有: ω = Ω F s \omega = \frac{\Omega }{{{F_s}}} ω=FsΩ,因此数字域频率 ω \omega ω 是模拟角频率 Ω \Omega Ω 对采样频率 F s F_s Fs 的归一化频率。
x ( n ) = e ( σ + j ω 0 ) n (2-7) x\left( n \right) = {e^{\left( {\sigma + j{\omega _0}} \right)n}} \tag{2-7} x(n)=e(σ+jω0)n(2-7) 其中, ω 0 \omega_0 ω0 为数字频率。
对所有 n n n 存在一个最小的正整数 N N N 使得: x ( n ) = x ( n + N ) , − ∞ < n < ∞ x\left( n \right) = x\left( {n + N} \right),\quad - \infty < n < \infty x(n)=x(n+N),−∞<n<∞ 则序列 x ( n ) x\left( n \right) x(n)为周期序列,周期为 N N N。
对于正弦序列有: x ( n ) = sin ( ω n ) = sin [ ω ( n + 2 π ω ) ] x\left( n \right) = \sin \left( {\omega n} \right) = \sin \left[ {\omega \left( {n + \frac{{2\pi }}{\omega }} \right)} \right] x(n)=sin(ωn)=sin[ω(n+ω2π)]
对于任意序列 x ( n ) x\left( n \right) x(n),都可以用单位脉冲序列的移位加权和来表示: x ( n ) = ∑ m = − ∞ ∞ x ( m ) δ ( n − m ) (2-8) x\left( n \right) = \sum\limits_{m = - \infty }^\infty {x\left( m \right)\delta \left( {n - m} \right)} \tag{2-8} x(n)=m=−∞∑∞x(m)δ(n−m)(2-8)
序列的简单运算有加法、乘法、移位、反转及尺度变换。
加法和乘法:序列之间加法和乘法,就把它们同序号的序列值逐项对应相加和相乘即可,较为简单就不赘述了。
移位:对一个序列 x ( n ) x(n) x(n),其移位序列 x ( n − n 0 ) x(n-n_0) x(n−n0) 。当 n 0 > 0 n_0>0 n0>0 时,则称为 x ( n ) x(n) x(n) 的延时序列;当 n 0 < 0 n_0<0 n0<0 时,则称为 x ( n ) x(n) x(n) 的超前序列。
翻转: x ( − n ) x(-n) x(−n) 则是 x ( n ) x(n) x(n) 的翻转序列。
尺度变换: x ( m n ) x(mn) x(mn) 是 x ( n ) x(n) x(n) 序列每隔 m m m 点取一点形成的序列,相当于 n n n 轴的尺度变换。
上图( a )为序列 x ( n ) x(n) x(n);上图( b )为 x ( n ) x(n) x(n) 的移位序列 x ( n − 2 ) x(n-2) x(n−2);上图( c )为 x ( n ) x(n) x(n) 的翻转序列 x ( − n ) x(-n) x(−n);上图( d )为 x ( n ) x(n) x(n) 的尺度变换序列 x ( 2 n ) x(2n) x(2n)。
时域离散系统的输入为 x ( n ) x(n) x(n),经一定的运算 T [ ⋅ ] T[\; \cdot \;] T[⋅],系统的输出序列为 y ( n ) y(n) y(n),输入输出之间的关系可表示为: y ( n ) = T [ x ( n ) ] (3-1) y(n)=T\left[ x(n) \right] \tag{3-1} y(n)=T[x(n)](3-1)
系统的输入、输出之间同时满足齐次性和可加性的系统称为线性系统。设 x 1 ( n ) x_1(n) x1(n) 和 x 2 ( n ) x_2(n) x2(n) 分别为系统的输入, y 1 ( n ) y_1(n) y1(n) 和 y 2 ( n ) y_2(n) y2(n) 分别为系统的输出。
则线性系统满足既齐次性: T [ a x 1 ( n ) ] = a y 1 ( n ) (3-2) T\left[ ax_1(n) \right]=ay_1(n) \tag{3-2} T[ax1(n)]=ay1(n)(3-2)
线性系统满足又可加性: T [ x 1 ( n ) + x 2 ( n ) ] = y 1 ( n ) + y 2 ( n ) (3-3) T\left[ x_1(n)+x_2(n) \right]=y_1(n)+y_2(n) \tag{3-3} T[x1(n)+x2(n)]=y1(n)+y2(n)(3-3)
综合起来看,线性系统应满足: T [ a x 1 ( n ) + b x 2 ( n ) ] = a y 1 ( n ) + b y 2 ( n ) (3-4) T\left[ ax_1(n)+bx_2(n) \right]=ay_1(n)+by_2(n) \tag{3-4} T[ax1(n)+bx2(n)]=ay1(n)+by2(n)(3-4)其中, a a a、 b b b均为常数。
下面给出一个经验判断方法,如果给定的系统方程中,存在高阶项( x 2 x^2 x2、 y 2 y^2 y2 )、绝对值( ∣ x ∣ |x| ∣x∣、 ∣ y ∣ |y| ∣y∣)、常数项中的任意一种,则系统为非线性系统。
使用经验法进行判断往往更加快捷,但若是题目要求判断系统是否是线性系统,请大家依然按照定义进行书写。下面给出一道例题。
例 证明 y ( n ) = a x ( n ) + b y(n)=ax(n)+b y(n)=ax(n)+b ( a a a和 b b b 是常数)所代表的系统是非线性系统。
证明: y 1 ( n ) = T [ x 1 ( n ) ] = a x 1 ( n ) + b y_1(n)=T[x_1(n)]=ax_1(n)+b y1(n)=T[x1(n)]=ax1(n)+b, y 2 ( n ) = T [ x 2 ( n ) ] = a x 2 ( n ) + b y_2(n)=T[x_2(n)]=ax_2(n)+b y2(n)=T[x2(n)]=ax2(n)+b
y ( n ) = T [ x 1 ( n ) + x 2 ( n ) ] = a x 1 ( n ) + a x 2 ( n ) + b y(n)=T[x_1(n)+x_2(n)]=ax_1(n)+ax_2(n)+b y(n)=T[x1(n)+x2(n)]=ax1(n)+ax2(n)+b
y ( n ) ≠ y 1 ( n ) + y 2 ( n ) y(n)\ne y_1(n)+y_2(n) y(n)=y1(n)+y2(n)
故,该系统是非线性系统
其实根据经验法,因为系统方程中含常数项,可以直接看出该系统是非线性系统。但题目要求证明系统是非线性系统,所以请按定义去书写。
如果系统对输入信号的运算关系 T [ ⋅ ] T[\; \cdot \;] T[⋅] 在整个运算过程中不随时间变化,或者说系统对于输入信号的响应与信号加于系统的时间无关,则这种系统称为时不变系统。即: y ( n ) = T [ x ( n ) ] y ( n − n 0 ) = T [ x ( n − n 0 ) ] (3-5) \begin{aligned} & y(n)=T\left[x(n)\right] & \\ & y(n-n_0)=T\left[x(n-n_0)\right] & \end{aligned} \tag{3-5} y(n)=T[x(n)]y(n−n0)=T[x(n−n0)](3-5)式中 n 0 n_0 n0 为任意整数。
下面给同样出一个经验判断方法,如果给定的系统方程中,存在变系数( n x ( n ) nx(n) nx(n) )、尺度变换( x ( m n ) x(mn) x(mn) )、**翻转( x ( − n ) x(-n) x(−n) )**中的任意一种,则系统为时变系统。
使用经验法进行判断往往更加快捷,但若是题目要求判断系统是否是时不变系统,请大家依然按照定义进行书写。下面给出一道例题。
例 检查 y ( n ) = n x ( n ) y(n)=nx(n) y(n)=nx(n) 所代表的系统是否是时不变系统。
解: y ( n − n 0 ) = ( n − n 0 ) x ( n − n 0 ) y(n-n_0)=(n-n_0)x(n-n_0) y(n−n0)=(n−n0)x(n−n0)
T [ x ( n − n 0 ) ] = n x ( n − n 0 ) T[x(n-n_0)]=nx(n-n_0) T[x(n−n0)]=nx(n−n0)
y ( n − n 0 ) ≠ T [ x ( n − n 0 ) ] y(n-n_0)\ne T[x(n-n_0)] y(n−n0)=T[x(n−n0)]
故,该系统是时变系统
其实根据经验法,因为系统方程中含变系数,可以直接看出该系统是时变系统。但题目要求判断系统是否是时不变系统,所以请按定义去书写。
线性时不变系统(以下简称LTI系统):同时满足线性和时不变特性的系统。
零输入响应:仅由初始状态引起的响应称为零输入响应,即没有输入信号时系统的响应。
零状态响应:仅由输入信号引起的响应称为零状态响应。
完全响应:零输入响应与零状态响应的和。
设系统的输入 x ( n ) = δ ( n ) x(n)=\delta(n) x(n)=δ(n),系统输出 y ( n ) y(n) y(n) 的初始状态为零,定义这种条件下的系统输出为系统的单位脉冲响应,用 h ( n ) h(n) h(n) 表示。也就是说,系统的单位脉冲响应 h ( n ) h(n) h(n) 是系统对 δ ( n ) \delta(n) δ(n) 的零状态响应。即: h ( n ) = T [ δ ( n ) ] (3-6) h(n)=T[\delta(n)] \tag{3-6} h(n)=T[δ(n)](3-6) 设系统的输入为 x ( n ) x(n) x(n),则根据式(2-8)可表示成单位脉冲序列移位加权和: x ( n ) = ∑ m = − ∞ ∞ x ( m ) δ ( n − m ) x\left( n \right) = \sum\limits_{m = - \infty }^\infty {x\left( m \right)\delta \left( {n - m} \right)} x(n)=m=−∞∑∞x(m)δ(n−m)则系统的输出为: y ( n ) = T [ ∑ m = − ∞ ∞ x ( m ) δ ( n − m ) ] y\left( n \right) = T\left[ \sum\limits_{m = - \infty }^\infty {x\left( m \right)\delta \left( {n - m} \right)} \right] y(n)=T[m=−∞∑∞x(m)δ(n−m)]根据LTI系统的线性性质有: y ( n ) = ∑ m = − ∞ ∞ x ( m ) T [ δ ( n − m ) ] y\left( n \right) = \sum\limits_{m = - \infty }^\infty {x\left( m \right) T \left[ \delta \left( {n - m} \right) \right]} y(n)=m=−∞∑∞x(m)T[δ(n−m)]根据LTI系统的时不变性有: y ( n ) = ∑ m = − ∞ ∞ x ( m ) h ( n − m ) = x ( n ) ∗ h ( n ) (3-7) y\left( n \right) = \sum\limits_{m = - \infty }^\infty {x\left( m \right)h \left( {n - m} \right)}=x(n)*h(n) \tag{3-7} y(n)=m=−∞∑∞x(m)h(n−m)=x(n)∗h(n)(3-7)式(3-7)中的“ ∗ * ∗”号表示线性卷积运算。由式(3-7)可以得出结论,系统的输出 y ( n ) y(n) y(n) 等于输入信号 x ( n ) x(n) x(n) 与系统的单位脉冲响应 h ( n ) h(n) h(n) 的线性卷积。所以,系统的单位脉冲响应 h ( n ) h(n) h(n) 是系统的一个重要指标。
我们将卷积运算的概念推广到一般函数,可以给出线性卷积运算的定义为: x 1 ( n ) ∗ x 2 ( n ) = ∑ m = − ∞ ∞ x 1 ( m ) x 2 ( n − m ) (3-8) {x_1}\left( n \right) * {x_2}\left( n \right) = \sum\limits_{m = - \infty }^\infty {{x_1}\left( m \right){x_2}\left( {n - m} \right)} \tag{3-8} x1(n)∗x2(n)=m=−∞∑∞x1(m)x2(n−m)(3-8)线性卷积运算满足交换律,即: x 1 ( n ) ∗ x 2 ( n ) = x 2 ( n ) ∗ x 1 ( n ) = ∑ m = − ∞ ∞ x 1 ( m ) x 2 ( n − m ) = ∑ m = − ∞ ∞ x 2 ( m ) x 1 ( n − m ) (3-9) x_1(n)*x_2(n)=x_2(n)*x_1(n)= \sum\limits_{m = - \infty }^\infty {{x_1}\left( m \right){x_2}\left( {n - m} \right)}= \sum\limits_{m = - \infty }^\infty {{x_2}\left( m \right){x_1}\left( {n - m} \right)} \tag{3-9} x1(n)∗x2(n)=x2(n)∗x1(n)=m=−∞∑∞x1(m)x2(n−m)=m=−∞∑∞x2(m)x1(n−m)(3-9) 计算卷积的方法有三种:图解法、解析法和使用MATLAB工具箱函数法。在题目中,我们最常遇到的就是有限长序列之间的卷积,对于这类题目,最好的方法就是图解法。由于解析法和MATLAB工具箱函数法在实际做题的时候基本不会考虑使用,所以我们重点学习图解法。
学过信号与系统的同学一定也学过模拟信号卷积运算的图解法,模拟信号求卷积与离散信号求卷积的步骤是一样的:
对于有限长序列的卷积来说,使用图解法进行求解是最快捷的,而且我们可以通过列表的方式来避免画图。下面用一道例题来看一下图解法怎么用。
例 已知 x ( n ) = R 4 ( n ) x(n)=R_4(n) x(n)=R4(n), h ( n ) = R 4 ( n ) h(n)=R_4(n) h(n)=R4(n),求 y ( n ) = x ( n ) ∗ h ( n ) y(n)=x(n)*h(n) y(n)=x(n)∗h(n)。
解:使用图解法(列表)求解如下表所示。
x ( m ) x(m) x(m) | 1 | 1 | 1 | 1 | |||||||
---|---|---|---|---|---|---|---|---|---|---|---|
h ( m ) h(m) h(m) | 1 | 1 | 1 | 1 | |||||||
h ( − m ) h(-m) h(−m) | 1 | 1 | 1 | 1 | y ( 0 ) = 1 y(0)=1 y(0)=1 | ||||||
h ( 1 − m ) h(1-m) h(1−m) | 1 | 1 | 1 | 1 | y ( 1 ) = 2 y(1)=2 y(1)=2 | ||||||
h ( 2 − m ) h(2-m) h(2−m) | 1 | 1 | 1 | 1 | y ( 2 ) = 3 y(2)=3 y(2)=3 | ||||||
h ( 3 − m ) h(3-m) h(3−m) | 1 | 1 | 1 | 1 | y ( 3 ) = 4 y(3)=4 y(3)=4 | ||||||
h ( 4 − m ) h(4-m) h(4−m) | 1 | 1 | 1 | 1 | y ( 4 ) = 3 y(4)=3 y(4)=3 | ||||||
h ( 5 − m ) h(5-m) h(5−m) | 1 | 1 | 1 | 1 | y ( 5 ) = 2 y(5)=2 y(5)=2 | ||||||
h ( 6 − m ) h(6-m) h(6−m) | 1 | 1 | 1 | 1 | y ( 6 ) = 1 y(6)=1 y(6)=1 |
故, y ( n ) = { 1 , 2 , 3 , 4 , 3 , 2 , 1 ; n = 0 , 1 , 2 , 3 , 4 , 5 , 6 } y(n)=\left\{ {1,2,3,4,3,2,1;n=0,1,2,3,4,5,6} \right\} y(n)={1,2,3,4,3,2,1;n=0,1,2,3,4,5,6}
需要说明的是,以下介绍的判断条件仅适用于LTI系统,所以在使用以下条件对系统进行因果性稳定性判断时,首先应确定系统是LTI系统。
一般因果系统定义:如果系统 n n n 时刻的输出只取决于 n n n 时刻以及 n n n 时刻以前的输入序列,而和 n n n 时刻以后的输入序列无关,则称该系统为因果系统。
LTI系统具有因果性的充要条件为系统的单位脉冲响应满足: h ( n ) = 0 n < 0 (3-10) h(n)=0 \quad n<0 \tag{3-10} h(n)=0n<0(3-10)满足式(3-10)的序列称为因果序列,因此因果系统的单位脉冲响应必然是因果序列。
根据定义,因果系统零时刻系统的输出只与零时刻的输入和零时刻以前的状态有关,而系统的单位脉冲响应是系统对于 δ ( n ) \delta(n) δ(n) 的零状态响应,所以在零时刻以前,因果系统的单位脉冲响应应为零。
一般稳定系统定义:如果对有界输入,系统产生的输出也是有界的,则称该系统为稳定系统。
LTI系统稳定的充要条件为系统的单位脉冲响应绝对可和,即: ∑ n = − ∞ ∞ ∣ h ( n ) ∣ < ∞ (3-11) \sum\limits_{n = - \infty }^\infty {\left| {h\left( n \right)} \right|} < \infty \tag{3-11} n=−∞∑∞∣h(n)∣<∞(3-11)