Skip to content

数字信号处理复习提纲 ​

本文档仅用于复习蒋武杨老师的课程《数字信号处理》。参考书本为《数字信号处理(第五版)》9787560664828。


绪论 ​


P2 ​

数字信号处理的实现方法,分为软件实现方法和硬件实现方法:

  • 软件实现方法指的是按照原理和算法,自己编写程序或者采用现成的程序在通用计算机上实现;
  • 用单片机实现的方法属于软硬结合实现......采用专用的数字信号处理芯片(DSP芯片)是目前发展最快、应用最广的一种方法;
  • 对于更高速的实时系统,DSP的速度也不满足要求时,应采用可编程超大规模器件或开发专用芯片来实现。

第1章 ​

时域离散信号和时域离散系统


P4 ​

如果信号的 自变量 和 函数值 都是 连续值 ,则称这种信号为 模拟信号 ,或者称为 时域连续信号 ,例如语言信号、温度信号等;

如果 自变量 取 离散值 , 而 函数值 取 连续值 , 则称这种信号为 时域离散信号 ,这种信号通常来源于对模拟信号的采样;

如果信号的 自变量 和 函数值 均取 离散值 , 则称为 数字信号 。


P5 ​

信号有模拟信号、时域离散信号和数字信号之分,按照系统的输入输出信号的类型,系统也分为模拟系统、时域离散系统和数字系统。

数字信号处理最终要处理的是数字信号,但为简单,在理论研究中一般研究时域离散信号和系统。

假设模拟信号xa(t),在离散时间点tn对它进行采样,得到xa(tn),n为整数。xa(tn)是离散时间变量tn的函数,仅在离散时间点tn上有意义,而在其他时间则没有定义。在实际应用中,通常采样间隔为常数T,即tn=nT。这种采样称为等间隔采样(均匀采样),采样得到的信号记为

x[n]=xa(t)|t=nT=xa(nT)−∞<n<∞

按照国际通用惯例,模拟信号的(t)用圆括号,而数字信号的[n]用方括号。方括号用来提醒读者:方括号里的自变量n只取整数。

至于在考试时,圆括号和方括号都算对。

显然x[n]是一个有序的数字集合,因此时域离散信号也可以称为序列。

时域离散信号有三种表示方法

  1. 用集合符号表示序列
  2. 用公式表示序列
  3. 用图形表示序列

P7 ​

单位脉冲序列δ(n) ​

δ(n)={1,n=00,n≠0 

单位脉冲序列也称为单位采样序列,在《信号与系统》书中成为单位序列。

矩形序列RN(n) ​

RN(n)={10≤n≤N−10其他n

P8 ​

正弦序列 ​

x(n)=sin(ωn)

式中,ω称为正弦序列的数字域频率(也称数字频率),单位是弧度(rad),它表示序列变化的速率,或者说表示相邻两个序列值之间相位变化的弧度数。

在《信号与系统》书中,把数字域频率称为数字角频率。

如果正弦序列是由模拟信号xa(t)采样得到的,那么

xa(t)=sin(Ωt)=sin(2πft)x(n)=xa(t)|t=nT=sin(ΩnT)=sin(ωn)

ω与模拟角频率Ω之间的关系为

ω=ΩT

上述公式具有普遍意义,它表示凡是由模拟信号采样得到的序列,模拟角频率Ω与序列的数字域频率ω呈线性关系。由于采样频率Fs与采样周期T互为倒数,因而有

ω=ΩFs=2πfFs

上式表示数字域频率是模拟角频率对采样频率的归一化频率。本书中用ω表示数字域频率,Ω和f分别表示模拟角频率和模拟频率。


P9 ​

负指数序列 ​

x(n)=e(σ+jω0)n

式中,ω0为数字域频率。设σ=0,用极坐标和实部虚部表示如下式:

x(n)=ejω0nx(n)=cos(ω0n)+jsin(ω0n)

由于n取整数,下面等式成立:

ej(ω0+2πM)n=ejω0ncos[(ω0+2πM)n]=cos(ω0n)sin[(ω0+2πM)n]=sin(ω0n)

上面公式中M取整数,所以对数字域频率而言,正弦序列和负指数序列都是以2π为周期的。在以后的研究中,在频率域只分析研究其主值区[−π,π]或[0,2π]就够了。

周期序列 ​

如果对所有n,存在一个最小的正整数N,使下面等式成立:

x(n)=x(n+mN)m为整数

则称序列x(n)为周期性序列,周期为N。

对于一般正弦序列与负指数序列的周期性讨论请查阅书本P9。


P12 ​

系统的输入、输出之间满足线性叠加原理的系统称为线性系统。

如果系统对输入信号的运算关系T[ · ]在整个运算过程中不随时间变化,或者说系统对于输入信号的响应与信号加于系统的时间无关,则称这种系统为时不变系统。


P13 ​

设系统的输入x(n)=δ(n),系统输出y(n)的初始状态为零,定义这种条件下的系统输出为系统单位脉冲响应。

在《信号与系统》书中称为单位序列。


P18 ​

如果系统n时刻的输出只取决于n时刻以及n时刻以前的输入序列,而和n时刻以后得输入序列无关,则称该系统具有因果性质,或称该系统为因果系统。


P19 ​

如果对有界输入,系统产生的输出也是有界的,则称该系统具有稳定性质,或称该系统为稳定系统。


P24 ​

模拟信号数字处理框图 ​

xa(t)→预滤波→ADC→数字信号处理→DAC→平滑滤波→ya(t)

ADC(Analog/Digital Converter) 模/数转换器
DAC(Digital/Analog Converter) 数/模转换器


P27 ​

总结上述内容,采样定理叙述如下:

(1)对连续信号进行等间隔采样形成采样信号,采样信号的频谱是原连续信号的频谱以采样频率 Ωs 为周期进行周期性的延拓形成的,用如下公式表示。

X^a(jΩ)=12πXa(jΩ)∗Pδ(jΩ)=12π⋅2πT∫−∞∞Xa(jθ)∑k=−∞∞δ(Ω−kΩs−θ)dθ=1T∑k=−∞∞∫−∞∞Xa(jθ)δ(Ω−kΩs−θ)dθ=1T∑k=−∞∞Xa(jΩ−jkΩs)

关键符号说明:
X^a(jΩ):采样信号的频谱;
Xa(jΩ):原连续信号的频谱;
Pδ(jΩ):采样脉冲(冲击串)的频谱;
Ωs=2πT:采样角频率(T 为采样周期);
δ(⋅):单位冲击函数;
k:整数,代表周期延拓的“副本”序号。

(2)设连续信号 xa(t) 属带限信号,最高截止频率为 Ωc,如果采样角频率 Ωs≥2Ωc(采样频率Fs≥2fc),那么让采样信号 x^a(t) 通过一个增益为 T、截止频率为 Ωs/2=π/T 的理想低通滤波器,可以唯一地恢复出原连续信号 xa(t)。否则,Ωs<2Ωc 会造成采样信号中的频谱混叠现象,不可能无失真地恢复原连续信号。

实际中对模拟信号进行采样,需根据模拟信号的截止频率,按照采样定理的要求选择采样频率,即 Ωs≥2Ωc,但考虑到理想滤波器 G(jΩ) 不可实现,要有一定的过渡带,为此可选 Ωs=(2+α)Ωc,α>0。另外,可以在采样之前加一抗混叠的低通滤波器,滤除高于 Ωs/2 的一些无用的高频分量和其他的一些杂散信号。这就是在模拟信号数字处理框图中采样之前加预滤波的原因。

加平滑滤波器的原因请查阅书本P32第五行


第2章 ​

时域离散信号和系统的频域分析


P79 ​

设系统初始状态为零,系统对输入为单位脉冲序列 δ(n) 的响应输出称为系统的单位脉冲响应 h(n)。对 h(n) 进行傅里叶变换,得到:

H(ejω)=∑n=−∞∞h(n)e−jωn=|H(ejω)|ejφ(ω)

一般称 H(ejω) 为系统的频率响应函数,或称系统的传输函数,它表征系统的频率响应特性。|H(ejω)| 称为幅频特性函数,φ(ω) 称为相频特性函数。

将 h(n) 进行 Z 变换,得到 H(z),一般称 H(z) 为系统的系统函数,它表征了系统的复频域特性。对 N 阶差分方程进行 Z 变换,得到系统函数的一般表示式:

H(z)=Y(z)X(z)=∑i=0Mbiz−i∑i=0Naiz−i

上面提到的 ”对 h(n) 进行傅里叶变换“ 、”对 h(n) 进行 Z 变换“ 等术语,在我们学习时可不用理会,即使不学文中所说的 ”傅里叶变换“、” Z 变换“ ,仍能理解相关知识点。


第3章 ​

离散傅里叶变换(DFT)


P95~P98 ​

设 x(n) 是一个长度为 M 的有限长序列,则定义 x(n) 的 N 点离散傅里叶变换为

X(k)=DFT[x(n)]=∑n=0N−1x(n)WNknk=0,1,…,N−1

X(k) 的离散傅里叶逆变换(Inverse Discrete Fourier Transform, IDFT)为

x(n)=IDFT[X(k)]=1N∑k=0N−1X(k)WN−knn=0,1,…,N−1

式中,WN=e−j2πN ,N 称为 DFT 变换区间长度,N≥M 。

按照国际通用惯例,DFT的 X[k] 用方括号,表示 k 只取整数。

前面定义的 DFT 变换对中,x(n) 与 X(k) 均为有限长序列,但由于 WNkn 的周期性,使变换式中的 X(k) 和 x(n) 隐含周期性,且周期均为 N。对任意整数 m,总有

WNk=WNk+mNk,m 为整数,N 为自然数

所以离散傅里叶变换式中,X(k) 满足:

X(k+mN)=∑n=0N−1x(n)WN(k+mN)n=∑n=0N−1x(n)WNkn=X(k)

实际上,任何周期为 N 的周期序列 x~(n) 都可以看做长度为 N 的有限长序列 x(n) 的周期延拓序列,而 x(n) 则是 x~(n) 的一个周期,即

x~(n)=∑m=−∞∞x(n+mN)x(n)=x~(n)RN(n)

上述关系如书本P98图 3.1.2(a) 和 (b) 所示。一般称周期序列 x~(n) 中从 n=0 到 N−1 的第一个周期为 x~(n) 的主值区间,而主值区间上的序列称为 x~(n) 的主值序列。因此 x(n) 与 x~(n) 的上述关系可叙述为:x~(n) 是 x(n) 的周期延拓序列,x(n) 是 x~(n) 的主值序列。


P99 ​

MATLAB 提供了用快速傅里叶变换算法 FFT(算法见第 4 章介绍)计算 DFT 的函数 fft,其调用格式如下:

Matlab
XK = fft(xn, N)

调用参数 xn 为被变换的时域序列向量,N 是 DFT 变换区间长度。当 N 大于 xn 的长度时,fft 函数自动在 xn 后面补零。函数返回 xn 的 N 点 DFT 变换结果向量 Xk,这时,X(k)=DFT[x(n)]N=Xk(k+1),k=0∼N−1。当 N 小于 xn 的长度时,fft 函数计算 xn 的前面 N 个元素组成的 N 长序列的 N 点 DFT,忽略 xn 后面的元素。

ifft 函数计算 IDFT ,其调用格式与 fft 函数相同,可参考 help 文件。


P118 ​

用 DFT 分析连续信号谱的原理示意图
用 DFT 分析连续信号谱的原理示意图


P120 ​

在对连续信号进行谱分析时,主要关心两个问题,这就是谱分析范围和频率分辨率。

谱分析范围为 [0,Fs/2],直接受采样频率 Fs 的限制。为了不产生频谱混叠失真,通常要求信号的最高频率 fc<Fs/2。

频率分辨率用频率采样间隔 F 描述,F 表示谱分析中能够分辨的两个频率分量的最小间隔。显然,F 越小,谱分析就越接近 Xa(jf),所以 F 较小时,我们称频率分辨率较高。


P125~P126 ​

DFT(实际中用 FFT 计算)可用来对连续信号和数字信号进行谱分析。在实际分析过程中,要对连续信号采样和截断,有些非时限数据序列也要截断,由此可能引起分析误差。下面分别对可能产生误差的三种现象进行讨论。

(1)混叠现象 ​

对连续信号进行谱分析时,首先要对其采样,变成时域离散信号后才能用 DFT (FFT) 进行谱分析。采样速率 Fs 必须满足采样定理,否则会在 ω=π(对应模拟频率 f=Fs/2)附近发生频谱混叠现象。这时用 DFT 分析的结果必然在 f=Fs/2 附近产生较大误差。因此,理论上必须满足 Fs≥2fc(fc 为连续信号的最高频率)。对 Fs 确定的情况,一般在采样前进行预滤波,滤除高于折叠频率 Fs/2 的频率成分,以免发生频谱混叠现象。

(2)栅栏效应 ​

我们知道,N 点 DFT 是在频率区间 [0,2π] 上对时域离散信号的频谱进行 N 点等间隔采样,而采样点之间的频谱是看不到的。这就好比从 N 个栅栏缝隙中观看信号的频谱情况,仅得到 N 个缝隙中看到的频谱函数值。因此称这种现象为栅栏效应。

由于栅栏效应,有可能漏掉(挡住)大的频谱分量。为了把原来被“栅栏”挡住的频谱分量检测出来,就必须提高频率分辨率。

  • 对于有限长序列:可以在原序列尾部补零;
  • 对于无限长序列:可以增大截取长度及 DFT 变换区间长度。

从而使频域采样间隔变小,增加频域采样点数和采样点位置,使原来漏掉的某些频谱分量被检测出来。对连续信号的谱分析,只要采样速率 Fs 足够高,且采样点数满足频率分辨率要求,就可以认为 DFT 后所得离散谱的包络近似代表原信号的频谱。

(3)截断效应 ​

实际中遇到的序列 x(n) 可能是无限长的,用 DFT 对其进行谱分析时,必须将其截短,形成有限长序列 y(n)=x(n)w(n),w(n) 称为窗函数,长度为 N。w(n)=RN(n),称为矩形窗函数。




由于内容过于繁多,第四章与第七章暂不整理。


部分作业题的解题过程与思路 ​


第1章 13 ​

对于连续信号 xa(t)=cos⁡(2πft+π/2),其基本周期的计算过程如下:

1. 识别角频率

连续标准余弦信号的一般形式为 x(t)=Acos⁡(Ωt+ϕ),其中 Ω 是角频率(单位为弧度/秒),ϕ 是初始相位。

对比题目信号,可以提取出角频率:

Ω=2πf

注:公式中的 π/2 是相位偏移,它只会使波形在时间轴上发生左右平移,不会改变信号的周期。

2. 计算周期

连续余弦信号的周期 T 与角频率 Ω 的基本关系为:

T=2π|Ω|

3. 代入求解

将 Ω=2πf 代入上述公式中:

T=2π|2πf|=1|f|

结论:

该连续信号的周期为 T=1|f|。


对连续信号进行采样,其核心过程就是将连续时间变量 t 替换为离散的时间点 nTs,其中 Ts 是采样间隔,n 是整数(代表采样点序号)。

1. 明确采样关系

已知连续信号:

xa(t)=cos⁡(2πft+π/2)

采样间隔:

Ts=0.02 秒

采样后的离散时间信号 x[n] 可以表示为:

x[n]=xa(nTs)

2. 代入求解

将 t=n×0.02 代入原信号的表达式中:

x[n]=cos⁡(2πf(0.02n)+π/2)

化简各项相乘的部分:

x[n]=cos⁡(0.04πfn+π/2)

与连续信号不同,离散时间正弦信号不一定都是周期的。它的周期性取决于其角频率与 2π 之间的比值是否为有理数。

我们来一步步推导 x[n] 的周期:

1. 提取离散角频率

已知上一步求得的采样信号为:

x[n]=−sin⁡(0.04πfn)

其中,离散角频率(通常用 ω 表示)为:

ω=0.04πf

2. 判定离散周期的条件

一个离散正弦序列具有周期 N(N 必须是正整数)的充要条件是,存在一个整数 k,使得:

ωN=2πk

或者写成比值的形式:

ω2π=kN

也就是说,ω2π 必须是一个有理数。如果比值是无理数,则该离散信号是非周期的。

3. 代入已知参数

将我们的 ω=0.04πf 代入比值公式中:

ω2π=0.04πf2π=0.02f=f50

以上内容均由ai生成,答案正确,但过程略显繁琐,实际计算无需这么多步骤,可以自行化简。



第3章 18 ​

已知条件:

  • 谱分辨率要求:F≤50 Hz

  • 信号最高频率:fmax=1 kHz=1000 Hz

1. 最小记录时间 Tp min ​

根据频率分辨率与记录时间的关系 F=1Tp,为了满足 F≤50 Hz:

1Tp≤50Tp≥150=0.02 s

答:最小记录时间 Tp min=0.02 s (即 20 ms)。

2. 最大取样间隔 Tmax ​

根据奈奎斯特采样定理,采样频率 fs 必须满足:

fs≥2fmax=2×1000 Hz=2000 Hz

因此,最低的采样频率为 fs min=2000 Hz。 取样间隔 T=1fs,显然当 fs 取最小值时,T 取得最大值:

Tmax=1fs min=12000=0.0005 s

答:最大取样间隔 Tmax=0.0005 s (即 0.5 ms)。

3. 最少采样点数 Nmin ​

总记录时间等于采样点数乘以取样间隔,即 Tp=N⋅T。 为了求最少采样点数,我们需要使用最小记录时间和最大取样间隔(或最低采样频率):

Nmin=Tp minTmax=Tp min⋅fs minNmin=0.02 s×2000 Hz=40

答:最少采样点数 Nmin=40。 (注:在实际的微处理机工程应用中,为了使用快速傅里叶变换(FFT)算法提高计算效率,通常会将 N 向上取为 2 的整数次幂,例如 N=64。但从纯理论计算最小满足条件的角度,答案为 40。)

4. 频率分辨率提高1倍的 N 值 ​

题目要求:“在频带宽度不变的情况下,使频率分辨率提高1倍(即 F 缩小一半)”。

  • 频带宽度不变:意味着分析信号的最高频率不变,即采样频率 fs 保持不变(仍取 2000 Hz)。

  • 频率分辨率提高1倍:新的频率分辨率 F′=F2≤25 Hz。

根据公式 N=fsF: 新的采样点数 N′ 为:

N′=fsF′=2000 Hz25 Hz=80

(直观理解:既然采样频率不变,要让分辨率翻倍,就必须让观察信号的时间翻倍,因此采样点数也需要直接翻倍。 40×2=80)

答:使频率分辨率提高 1 倍的 N 值为 80。


第4章 1 ​

如果某通用单片计算机的速度为平均每次复数乘需要 4 μs,每次复数加需要 1 μs,用来计算 N=1024 点 DFT,问直接计算需要多少时间?用 FFT 计算呢?

已知条件:

  • 计算点数:N=1024

  • 复数乘法耗时:tmul=4 μs

  • 复数加法耗时:tadd=1 μs

1. 直接计算 DFT 耗时 ​

根据 DFT 定义公式 X(k)=∑n=0N−1x(n)WNnk,直接计算 N 点 DFT 的计算量为:

  • 复数乘法次数:N2

  • 复数加法次数:N(N−1)

代入 N=1024:

  • 复数乘法次数 =10242=1,048,576 次

  • 复数加法次数 =1024×1023=1,047,552 次

直接计算总耗时 TDFT:

TDFT=1048576×4 μs+1047552×1 μsTDFT=4,194,304 μs+1,047,552 μs=5,241,856 μs

换算成秒:TDFT≈5.24 秒。

2. 用 FFT (基-2) 计算耗时 ​

采用基-2 FFT 算法时(设 N=2M,则 M=log2⁡N=log2⁡1024=10),整个蝶形图有 M 级,每级有 N2 个蝶形运算。每个基-2蝶形运算包含 1 次复数乘法和 2 次复数加法。因此整体计算量为:

  • 复数乘法次数:N2log2⁡N

  • 复数加法次数:Nlog2⁡N

代入 N=1024:

  • 复数乘法次数 =10242×10=5120×10=5,120 次

  • 复数加法次数 =1024×10=10,240 次

FFT 计算总耗时 TFFT:

TFFT=5120×4 μs+10240×1 μsTFFT=20,480 μs+10,240 μs=30,720 μs

换算成毫秒:TFFT=30.72 毫秒 (约 0.03 秒)。


第4章 图4.2.4默写 ​

本节内容请参考课本对应图片

要看懂或画出 8点 DIT-FFT(按时间抽选的基-2快速傅里叶变换)运算流图,我们需要从最基础的知识点开始“搭积木”。

1. 核心思想:分治法 (Divide and Conquer) ​

DIT-FFT 的核心思路是:将一个长序列的 DFT,不断地拆分成两个短序列的 DFT。 具体做法是按时间序列索引的奇偶性进行拆分:

  • 第一步拆分:将 N=8 拆成两个 N=4 (偶数索引 x(0,2,4,6) 构成一个,奇数索引 x(1,3,5,7) 构成一个)。

  • 第二步拆分:将每个 N=4 再拆成两个 N=2。

  • 第三步拆分:N=2 本身就是最基础的单元。 由于 8=23,所以整个运算流图需要经过 M=3 级的运算。

2. 基础建筑模块:蝶形运算 (Butterfly Operation) ​

流图中最基本的交叉结构像一只蝴蝶,被称为“蝶形运算”。 一个标准的基-2蝶形运算包含两个输入端(设为 A 和 B)和两个输出端(设为 X 和 Y),以及一个“旋转因子”(WNk)。它的数学本质是:

  • 上端输出:X=A+B⋅WNk

  • 下端输出:Y=A−B⋅WNk

图解提示:在流图中,两根线相交并带有箭头,WNk 通常标注在交叉点前的下分支上,下分支连接到下输出端时通常会带有一个 −1 的系数(表示相减)。

3. 第一步:输入端序列的“倒位序” (Bit-Reversal) ​

因为我们在推导中不断按“奇偶”将时间序列(Time)抽选打乱,最终送入流图第一级的输入信号不再是 x(0),x(1),x(2)... 这样的自然顺序,而是发生了码位倒置。 什么是倒位序?把自然索引的二进制码颠倒过来:

  • 0 (000) → 颠倒后还是 (000) → 0 ⇒ x(0)

  • 1 (001) → 颠倒后变成 (100) → 4 ⇒ x(4)

  • 2 (010) → 颠倒后还是 (010) → 2 ⇒ x(2)

  • 3 (011) → 颠倒后变成 (110) → 6 ⇒ x(6)

  • 4 (100) → 颠倒后变成 (001) → 1 ⇒ x(1)

  • 5 (101) → 颠倒后还是 (101) → 5 ⇒ x(5)

  • 6 (110) → 颠倒后变成 (011) → 3 ⇒ x(3)

  • 7 (111) → 颠倒后还是 (111) → 7 ⇒ x(7)

所以,运算流图最左侧的输入端,从上到下的顺序固定为:x(0),x(4),x(2),x(6),x(1),x(5),x(3),x(7)。

4. 第二步:逐级分析运算流图 (3级流水线) ​

对于 8 点 DIT-FFT,一共有 log2⁡(8)=3 级(列)蝶形运算。每一级有 8/2=4 个蝶形。

第 1 级 (运算单元距离为 1) ​

  • 计算内容:计算 4 个 2点DFT。

  • 连线规律:相邻的两个点交叉组合形成一个蝶形。

    • 蝶形1:x(0) 和 x(4) 交叉

    • 蝶形2:x(2) 和 x(6) 交叉

    • 蝶形3:x(1) 和 x(5) 交叉

    • 蝶形4:x(3) 和 x(7) 交叉

  • 旋转因子:所有蝶形的下支路均乘以 W80=1。

第 2 级 (运算单元距离为 2) ​
  • 计算内容:将前一级输出的 2点DFT 组合成 2 个 4点DFT。

  • 连线规律:跨越 1 个节点(即距离为 2)进行交叉。分成上下两大组(前四个点一组,后四个点一组)。

    • 上半组蝶形1:第1条线与第3条线交叉。

    • 上半组蝶形2:第2条线与第4条线交叉。

    • 下半组蝶形1:第5条线与第7条线交叉。

    • 下半组蝶形2:第6条线与第8条线交叉。

  • 旋转因子:每组里的两个蝶形,下支路依次乘以 W80 和 W82。

第 3 级 (运算单元距离为 4) ​
  • 计算内容:将前一级输出的 4点DFT 组合成最终的 1 个 8点DFT。

  • 连线规律:跨越 3 个节点(即距离为 4)进行交叉。所有 8 个点都在一组内进行交叉运算。

    • 第1条线与第5条线交叉。

    • 第2条线与第6条线交叉。

    • 第3条线与第7条线交叉。

    • 第4条线与第8条线交叉。

  • 旋转因子:四个蝶形的下支路依次乘以 W80,W81,W82,W83。

5. 总结:如何默写 N 点 DIT-FFT 流图? ​

  1. 确定级数:画 M=log2⁡N 列蝶形。

  2. 确定输入:将输入序列按照倒位序排布在左侧。输出端在最右侧,为自然顺序 X(0) 到 X(N−1)。

  3. 蝶形跨度:第 m 级的跨距为 2m−1。(例如第1级相邻跨1,第2级跨2,第3级跨4)。

  4. 旋转因子种类:第 m 级需要用到 2m−1 种旋转因子。对于最后级(第3级),旋转因子按顺序为 WN0,WN1,WN2…WNN/2−1。前面级别的旋转因子可以通过公式等效替换(如 W41=W82)。


第7章 1 ​

已知 FIR 滤波器的单位脉冲响应为:h(n) 长度 N=5,依次为 1,−2,7,−2,1。求幅度特性、相位特性和群延时。

已知条件:

  • h(0)=1

  • h(1)=−2

  • h(2)=7

  • h(3)=−2

  • h(4)=1

1. 观察对称性 ​

首先观察给定序列,不难发现它满足:h(n)=h(4−n)。 这种以中心点对称,且长度 N 为奇数(N=5)的 FIR 滤波器,属于典型的第一类线性相位 FIR 滤波器。其对称中心位于 α=N−12=2 处。

2. 求系统的频率响应 H(ejω) ​

系统的频率响应是单位脉冲响应的离散时间傅里叶变换(DTFT):

H(ejω)=∑n=0N−1h(n)e−jωn

将已知的 h(n) 代入展开:

H(ejω)=1+(−2)e−jω+7e−j2ω+(−2)e−j3ω+1e−j4ω

为了利用对称性,我们强制提取出中心相移因子 e−j2ω(因为对称中心在 n=2):

H(ejω)=e−j2ω[1⋅ej2ω−2⋅ejω+7−2⋅e−jω+1⋅e−j2ω]

将括号内正负指数项重新进行配对:

H(ejω)=e−j2ω[(ej2ω+e−j2ω)−2(ejω+e−jω)+7]

根据欧拉公式 cos⁡(θ)=ejθ+e−jθ2,有 ejθ+e−jθ=2cos⁡(θ),将其代入上式得:

H(ejω)=e−j2ω[2cos⁡(2ω)−4cos⁡(ω)+7]

3. 求幅度特性 |H(ejω)| ​

从上面的公式可以看出,H(ejω) 由两部分组成:相移项 e−j2ω (模为 1)和一个纯实数函数 A(ω)=2cos⁡(2ω)−4cos⁡(ω)+7。

我们来判断一下 A(ω) 的正负号。将 cos⁡(2ω)=2cos2⁡(ω)−1 代入:

A(ω)=2(2cos2⁡(ω)−1)−4cos⁡(ω)+7A(ω)=4cos2⁡(ω)−4cos⁡(ω)+5

配方得到:

A(ω)=(2cos⁡(ω)−1)2+4

显然,对于任意的 ω,都有 (2cos⁡(ω)−1)2≥0,因此 A(ω)≥4>0。 由于该实函数恒为正,幅度特性就直接等于该实函数本身(如果存在负值,需要加绝对值,并发生 π 的相位跳变,这里不需要)。

答:幅度特性为

|H(ejω)|=2cos⁡(2ω)−4cos⁡(ω)+7

(或写成 4cos2⁡(ω)−4cos⁡(ω)+5 亦可)

4. 求相位特性 θ(ω) ​

由于上述的幅度函数 A(ω) 恒大于零,没有引发符号改变的额外相位(跳变),因此系统的总体相位完全由之前提取出的复指数项 e−j2ω 决定。

答:相位特性为

θ(ω)=−2ω

(注意这是一个关于 ω 的线性函数,因此得名“线性相位”。)

5. 求群延时 τg(ω) ​

群延时的定义是相位特性对角频率 ω 的负导数:

τg(ω)=−dθ(ω)dω

将 θ(ω)=−2ω 代入求导:

τg(ω)=−d(−2ω)dω=2

答:群延时为恒定值 2。 (物理意义:这意味着所有不同频率的信号分量通过该滤波器时,都会被一致地延迟 2 个采样周期,从而保证信号的波形不会发生色散失真。)

以上内容均由ai生成,答案正确,但过程略显繁琐。在我看来,第三步得出 H(ejω)=e−j2ω[2cos⁡(2ω)−4cos⁡(ω)+7] 后,可以直接注意到 θ(ω) (相位特性),Hg(ω) (幅度特性),以及群延时( θ(ω) 的导数)的表达式或值了。


第7章 10 ​

利用布莱克曼窗(Blackman Window)设计线性相位 FIR 低通滤波器。要求希望逼近的理想低通滤波器通带截止频率 ωc=π/4 rad,滤波器长度 N=21。求对应的单位脉冲响应 h(n) 的表达式。

已知条件:

  • 理想低通截止频率:ωc=π4

  • 滤波器长度:N=21

  • 所用窗函数:布莱克曼窗(Blackman window)

1. 确定理想低通滤波器的单位脉冲响应 hd(n) ​

一个零相位的理想低通滤波器(截止频率为 ωc)在时域的单位脉冲响应为:

hd,zero(n)=sin⁡(ωcn)πn

为了设计一个因果的线性相位 FIR 滤波器,我们需要将这个非因果的响应向右平移。平移量(群延时)取决于滤波器的长度 N:

α=N−12=21−12=10

将响应向右平移 α=10 个单位,得到因果的理想低通脉冲响应 hd(n):

hd(n)=sin⁡[ωc(n−α)]π(n−α)=sin⁡[π4(n−10)]π(n−10)(n≠10)

当 n=10 时,利用极限法则 limx→0sin⁡(ax)x=a 可以求出中心点的值:

hd(10)=ωcπ=π/4π=0.25

2. 写出布莱克曼窗 w(n) 的表达式 ​

对于长度为 N 的布莱克曼窗,其标准数学定义式为:

w(n)=0.42−0.5cos⁡(2πnN−1)+0.08cos⁡(4πnN−1),0≤n≤N−1

将 N=21 代入该公式并化简:

w(n)=0.42−0.5cos⁡(2πn20)+0.08cos⁡(4πn20)w(n)=0.42−0.5cos⁡(πn10)+0.08cos⁡(πn5),0≤n≤20

3. 计算最终的滤波器单位脉冲响应 h(n) ​

根据窗函数法的设计原理,实际滤波器的单位脉冲响应 h(n) 就是理想滤波器的响应与窗函数在时域相乘(即对理想响应进行“截断”和平滑):

h(n)=hd(n)⋅w(n),0≤n≤20

我们将前两步的结果合并,分情况写出最终的 h(n) 表达式:

1) 当 n≠10 (即 0≤n≤20 且 n≠10)时:

h(n)=sin⁡[π4(n−10)]π(n−10)[0.42−0.5cos⁡(πn10)+0.08cos⁡(πn5)]

2) 当 n=10 时: 我们需要分别代入 n=10:

  • hd(10)=0.25

  • w(10)=0.42−0.5cos⁡(π)+0.08cos⁡(2π)=0.42−0.5(−1)+0.08(1)=0.42+0.5+0.08=1

因此:

h(10)=0.25×1=0.25

4. 结论总结 ​

答:利用布莱克曼窗设计的线性相位 FIR 低通滤波器,其单位脉冲响应 h(n) 的表达式为:

h(n)={sin⁡[π4(n−10)]π(n−10)[0.42−0.5cos⁡(πn10)+0.08cos⁡(πn5)],0≤n≤20, n≠100.25,n=100,其他

以上内容均由ai生成,答案正确,但过程略显繁琐。实际只用到了 hd(n) , w(n) , 以及 h(n) 的公式(还有一个高等数学的求极限)。甚至只需要记住 h(n)=hd(n)w(n) 即可。

理解公式中每个符号的意义对于解题来说是很有帮助,强烈建议仔细阅读课本的第7章第2节开头部分的内容。