简介现代数字信号处理复习题是一份面向电子信息类专业学生、考研复习者及从业者的Word版习题合集系统覆盖数字信号基本概念、傅里叶变换、采样理论、数字滤波器设计与信号处理方法。文档精选九类典型问题并给出解答包含采样率与谱分辨率参数计算、频谱分析误区辨析、低通滤波器作用说明、因果性与稳定性判断、FIR与IIR滤波器方案比较、功率谱估计改进思路、自适应滤波理论及应用等内容能帮助读者快速掌握解题套路、深化对频域分析与滤波设计的理解。资料共1个doc文档压缩包大小1.82MB内容紧凑、排版规范便于打印或电子阅读。目前已有182人学习下载。1. 现代数字信号处理到底在学什么从一条混叠的“假频率”说起你刷短视频时语音一键降噪、照片去雾、导航里的定位修正背后全是数字信号处理的功劳。现代数字信号处理简单说就是把连续世界里的信号切成一个个数字点再用数学手段从这些点里提炼出想要的信息。学这门课的人最容易犯的毛病是一头扎进公式里背题却忘了整门课其实只围绕三个问题转信号怎么进计算机、切完之后怎么加工、加工得不好怎么补救。这份复习题集的价值恰恰是把这三个问题拆成了几十道典型题让读者在动笔之前先看见整张地图。搞清楚这张地图比多刷三遍题更重要。2. 采样这件事为什么数字世界看不见连续的信号2.1 “先把连续世界拍照”采样率与奈奎斯特条件把模拟信号变成数字信号第一步是采样。你可以把采样想象成给一条连续曲线拍照——相机的快门每隔一小段时间按一次记录下那个瞬间的数值。快门按得越勤拍到的画面越接近原样按得越稀画面就会丢细节甚至出现完全不属于原信号的“假频率”。这个“假频率”在教材里叫混叠。一个 100Hz 的信号如果采样频率只有 150Hz采出来的点看上去可能像 50Hz 的信号这就是典型的翻车现场。要避免混叠采样频率必须至少达到信号最高频率的两倍也就是 fs ≥ 2 fmax这个下限常被称为奈奎斯特条件。但现实中信号往往不是干干净净的单一频率高频噪声和干扰无处不在所以工程上不会只靠“刚好两倍”来保命而是在采样之前先让信号通过一个低通滤波器把超过一半采样频率的成分直接砍掉。这个滤波器在 A/D 转换之前出现叫“抗折叠”滤波器作用是限制信号的最高频率让采样条件真正成立。对应地D/A 转换之后还要再过一个低通滤波器。数字信号还原成模拟波形时会带出很多高频延拓成分输出看起来像台阶不够平滑。这时候的低通滤波器负责把多余的高频谱滤掉让波形变顺滑所以它叫“平滑”滤波器。一个在入口挡高频一个在出口抹台阶两个低通滤波器各管一段别记反。2.2 数字频率和模拟频率一对容易看花眼的“表兄弟”很多初学者栽在“频率”这个词上因为它在数字信号处理里有两个长相相近、含义不同的版本。模拟频率说的是每秒信号转了多少圈单位是 Hz 或者 rad/s它描述的是真实世界里的快慢数字频率说的是相邻两个采样点之间信号转了多少弧度单位是 rad/样本它描述的是离散序列内部的相对变化。两者的换算关系很直接数字频率等于模拟频率乘以采样间隔。采样率变了同一个模拟信号对应的数字频率也会变。很多人拿到 DFT 结果看到某个峰值就直接喊“这是 300Hz”其实数字频率只是单位圆上的一个位置真正的模拟频率得结合采样率换算回去。习题里有一道经典题专门考这个一个有限长模拟信号用 4kHz 采样做 N 点 DFT谱线间距是 100Hz有人想让谱线每 50Hz 一根于是改用 8kHz 采样、做 2N 点 DFT。听起来采样率翻倍、点数翻倍似乎应该看得更细答案却是不能。原因就是他把数字频率和模拟频率混为一谈了。采样率提高后数字频率单位圆上的样点确实变多了但从模拟频率轴看每根谱线对应的真实频率间隔一点没变因为数字频率始终对应着模拟频率乘以采样间隔这个固定关系。换句话说提高采样率只能让数字频率分辨率变好救不了模拟频率的分辨率。2.3 想要谱线更密改采样率没用频谱分辨率的真实决定因素那怎样才能让模拟频率的谱线变密答案在记录时长里。频谱分辨率 Δf 和记录时长 Tp 之间有一个近乎“铁律”的关系Δf ≈ 1 / Tp。想要谱线间距从 100Hz 变成 50Hz唯一可靠的办法是把记录时间拉长一倍让 Tp 变大而不是提高采样率。用一段简单代码能直观看到这个结论import numpy as np fs1 4000 # 第一次采样率4 kHz fs2 8000 # 第二次采样率8 kHz Tp 0.01 # 记录时长固定为 10 ms # 两次采样得到同样时长的记录点数分别为 N 和 2N t1 np.arange(int(fs1 * Tp)) / fs1 t2 np.arange(int(fs2 * Tp)) / fs2 x1 np.sin(2 * np.pi * 1000 * t1) # 1 kHz 正弦 x2 np.sin(2 * np.pi * 1000 * t2) f1 np.fft.fftfreq(len(x1), 1 / fs1) # 模拟频率坐标 f2 np.fft.fftfreq(len(x2), 1 / fs2) print(f1[1] - f1[0]) # 输出 100 Hz print(f2[1] - f2[0]) # 仍然输出 100 Hz代码里两次记录的时长都是 10ms采样率分别是 4kHz 和 8kHz所以点数一个是 40、一个是 80。FFT 之后相邻谱线的频率间隔都用 1 除以记录时长计算结果是同样的 100Hz。想让间隔变成 50Hz就得把 Tp 从 0.01s 拉到 0.02s让参与变换的样本覆盖更长的时间段。要点是采样率决定你能看到的频率范围记录时长决定你能把谱线看得多细两个参数各管一摊别指望用一个替代另一个。3. 频谱分析傅里叶变换、功率谱与“看得更清”的错觉3.1 傅里叶变换到底在干什么把一段信号拆成频率分量傅里叶变换的核心思想可以这样理解任何一段信号都可以看成是许多不同频率、不同幅度、不同相位的正弦波叠加出来的。变换做的事情就是把这个叠加过程反过来——从一段波形里反推出“里面有哪些频率各自占多大分量”。这就像你听到一个和弦耳朵能分辨出里面有哆、有咪、有嗦傅里叶变换就是让机器也具备这种辨音能力。对连续信号傅里叶变换给出连续的频谱对离散序列对应的工具叫离散时间傅里叶变换它输出的频谱是周期的。实际计算机只能处理有限长的离散点所以真正用的是离散傅里叶变换也就是 DFT以及它背后那套快速算法 FFT。DFT 输入 N 个采样点输出 N 个频率分量每个分量对应一个特定的模拟频率两个相邻分量之间的间隔正是上节说的 1/Tp。很多人在这一步又踩坑以为把采样率调高、点数调大频谱自然就变“清楚”了。实际上点数变大只代表你在同样的频率范围内画了更多点但如果记录时长没变这些点排列的疏密程度并不会改变。频谱清不清楚看的永远是“真实频率轴上的点密不密”而这完全由记录时长决定。3.2 随机信号用不了傅里叶变换功率谱估计为什么出场教材里有一句让很多人懵的话对随机信号傅里叶变换并不存在。原因是随机信号没有确定的数学表达式每一次观测得到的都只是无数可能结果里的一个样本。它的能量也不收敛直接做傅里叶变换积分结果发散谱根本定义不出来。那随机信号该用什么来描述频率特性答案是功率谱。功率谱的思路是不去看某一个样本的“具体长相”而是看信号能量在频率轴上是如何分布的。这就绕不开自相关函数——它描述信号在不同时刻之间的相关性而维纳-辛钦定理告诉我们平稳随机信号的自相关函数和功率谱密度是一对傅里叶变换对。换句话说先估计自相关再做变换就能得到功率谱。这里顺带要分清两个概念严平稳随机过程要求任意维的概率分布都不随时间起点平移而改变条件非常苛刻宽平稳只要求均值恒定、自相关函数只和时间差有关实用得多。严平稳一定是宽平稳反过来不成立考试喜欢考这句话。3.3 经典谱估计与现代谱估计分辨率不足的两种解法既然只能拿到有限长的观测数据功率谱就只能靠“估计”。经典谱估计有两条路一条是周期图法直接对观测数据做 FFT然后取模平方除以长度好处是用 FFT 计算速度快、不用先估计自相关函数另一条是相关法先估自相关函数再做傅里叶变换。两条路殊途同归共用一个致命缺点它们默认观测窗外面的数据全是零这相当于给真实信号硬加了一个矩形窗造成频谱泄漏和分辨率下降。改进办法也很常规把数据分成多段分别求周期图再平均或者给数据加窗函数抑制旁瓣。现代谱估计走的是另一条路不跟数据窗较劲而是假设信号由一个参数模型产生比如 AR 模型。先根据观测数据把模型参数估出来再用模型推出功率谱。因为模型可以外推观测窗之外的数据所以短数据下分辨率明显优于经典方法。AR 参数估计里有个常用递推叫 Burg 递推它的一大优势是直接从观测数据出发递推模型参数绕开了“先估计自相关函数”这个容易引入误差的中间步骤。简单说经典方法便宜直观但分辨率受限现代方法计算复杂一些却能在数据不长时把靠得很近的谱峰分开。4. 易混概念排查采样率、分辨率、因果性与两类滤波器数字信号处理里的很多概念本身不难它们容易混是因为来自两套坐标系一套属于连续世界一套属于离散世界。脑子在两条坐标系之间来回切稍不留神就把“采样率提高”和“分辨率提高”划了等号。下面四个是最常出问题的配对逐个说清它们到底差在哪。4.1 采样率与频率分辨率提高采样率为什么不能看清谱线易混点在于这两个词都带“频率”又都在采样和 FFT 里同时出现很多人默认它们是一回事。实际上采样率决定的是你能观察的频率范围——采样率越高奈奎斯特频率越高能无混叠地容纳的信号频率就越宽频率分辨率决定的是你能把频谱里的细节分离得多细它等于 1 除以记录时长。想看得更宽提高采样率想看得更细拉长记录时间。一个管宽度一个管精细度互不替代。做题时如果拿到“谱分辨率不够”的问题先别急着翻倍采样频率先问自己一句记录时间拉长了吗4.2 FIR 与 IIR线性相位和阶数效率怎么选这两类数字滤波器最大的混淆点在于它们都能滤除不需要的频率分量名字里也都带“滤波器”三个字于是初学者以为随便选一个就行。实际差别很大。FIR 是有限脉冲响应滤波器结构上不递归计算不会振荡误差影响小还能用 FFT 加速最可贵的是能实现严格的线性相位——波形形状不变只是整体延迟代价是同样指标下需要的阶数往往比较高。IIR 是无限脉冲响应滤波器结构上带反馈能用低得多的阶数实现陡峭的幅度选择性还能直接借用模拟滤波器的成熟设计成果缺点是相位特性差而且存在稳定性问题有限字长下可能产生振荡。选型口诀大致是对相位敏感、要求波形不失真优先 FIR对阶数和计算量敏感、能容忍相位失真用 IIR。注意 IIR 依赖递归结构极点位置设计不好会出现不稳定必须确认收敛域包含单位圆。4.3 因果与稳定收敛域说了算别凭直觉判断因果性和稳定性是系统分析里的两个独立属性却总被放在一起记导致很多人以为“因果的肯定稳定”或者“稳定的肯定因果”。判断标准其实都藏在 Z 变换的收敛域里。因果性看收敛域是不是某个圆的外部也就是说系统在 n0 时没有响应只依赖当前和过去的输入稳定性看收敛域包不包含单位圆包含单位圆意味着单位脉冲响应绝对可和系统在有限输入下不会发散。同一个系统函数极点位置固定收敛域取法不同性质组合就会不同。最典型的情形是收敛域取在最外层极点的外部系统是因果的但如果这个收敛域不包含单位圆系统就不稳定换个收敛域取法让它包含单位圆系统稳定了却又变成非因果的。所以“因果”和“稳定”根本不是绑定关系它们各自独立做题时必须先画极点图再圈收敛域最后分别检查两个条件不能凭直觉拍脑袋。4.4 维纳滤波与卡尔曼滤波平稳与追踪之间的取舍这两个名字放在一起常让人误以为它们是两种竞争关系选一个就行。实际上它们是两代解题思路。维纳滤波的前提是信号和噪声都是平稳随机过程且自相关函数、互相关函数已知它通过求解维纳-霍夫方程得到最优的单位脉冲响应或传递函数本质上是在频域里找最优解。卡尔曼滤波不要求平稳性它把信号建模成状态空间里的动态系统用状态方程描述信号变化用测量方程描述观测误差然后基于当前估计值和最新观测值做递推每一步都给出状态的最优线性无偏估计。两者的关系可以概括为卡尔曼滤波在稳态条件下能得到和维纳滤波相同的结果因为它俩都以最小均方误差为准则但卡尔曼的适用范围更宽——信号可以是非平稳的还支持多输入多输出不要求初始时刻是负无穷远。代价是它需要你知道状态方程和测量方程模型不准时滤波结果可能发散。维纳适合“统计特性已知且平稳”的老实环境卡尔曼适合“系统能用状态方程描述、很可能非平稳”的动态环境。5. 滤波家族全景从 RC 电路到自适应滤波器5.1 从 RC 低通说起模拟滤波器是怎么变成数字滤波器的滤波这个概念最早在模拟电路里出现。一个最简单的 RC 低通电路电容两端的电压对输入电压有频率选择性低频容易通过高频被衰减。这个电路的频率响应函数只有一个极点写成 H(ω) 的形式输入信号的功率谱经过它之后输出功率谱等于输入功率谱乘以 |H(ω)|²。这个乘法式是整个模拟滤波理论的核心——研究一个滤波器本质上就是在研究它的频率响应。数字滤波器是这套思路的数字化版本输入、输出都是数字序列通过运算改变信号中不同频率成分的比例。数字滤波器分两大类。FIR 用当前和过去的输入做加权和对应卷积运算不牵扯反馈所以天生稳定、相位线性IIR 在加权和之外还要把过去的输出反馈回来参与计算对应递归结构所以效率高但稳定性需要小心。设计方法也分两派IIR 可以直接把模拟滤波器的成熟成果搬过来通过频率变换从低通原型得到高通、带通、带阻设计工作量小FIR 主要用窗函数法、频率取样法和计算机辅助优化设计灵活但推导不如 IIR 那样有封闭公式。5.2 维纳滤波与卡尔曼滤波的解题思路数字滤波器解决的是“按频率筛信号”维纳滤波和卡尔曼滤波解决的是另一个问题在噪声里把有用信号“估”出来。维纳滤波的思路是已知输入信号的自相关函数、输入与期望响应的互相关函数就能列出维纳-霍夫方程解出最优的滤波器权向量。它的数学基础是正交性原理——让估计误差最小的最优滤波器必然满足“估计误差与输入正交”。这个结论把最优滤波问题变成了一个矩阵方程求解过程干净利落前提是你手里得有那些统计量。卡尔曼滤波换了一条完全不同的路线。它不依赖信号平稳而是把信号看成某个动态系统的状态用状态方程描述状态如何随时间演化用测量方程描述观测值如何携带状态信息。递推过程分两步先用状态方程预测下一步的状态再用最新观测值修正预测结果。每一步只用到上一步的状态估计和当前的观测量不需要记住所有历史数据所以特别适合实时处理。习题里有句话总结得很好卡尔曼滤波在瞬态有一个收敛过程进入稳态后与维纳滤波给出相同结果。差别在于维纳滤波需要知道相关函数卡尔曼滤波需要知道状态方程和测量方程维纳滤波只能处理平稳信号卡尔曼滤波可以处理非平稳信号维纳滤波的解是传递函数卡尔曼滤波的解是状态变量的递推更新式。5.3 自适应滤波不需要先验统计量的“学习型”滤波器维纳和卡尔曼都有个共同前提你得先知道一些统计特性或者先建立精确的模型。但很多实际场景里噪声特性是未知的甚至随时间变化。这时就需要自适应滤波——它能根据输入数据不断调整自己的参数自动逼近最优解。最经典的算法是 LMS它从最速下降法出发用瞬时梯度代替真实梯度完成权向量的迭代更新。核心代码只有一行w 2 * mu * e * x # w: 滤波器权向量, e: 估计误差, x: 当前输入, mu: 步长因子这一行就是自适应滤波的“发动机”。每次进来一个新样本算法用当前权向量算一个输出跟期望信号比较得到误差 e然后误差乘以输入 x 和步长因子 mu反向修正权向量 w。mu 控制收敛速度和稳定性mu 太大会震荡发散mu 太小收敛得像蜗牛实际中通常要在一个最大值约束之下取值。这个“边用边学”的特性让自适应滤波能应对非常多变的场景电话回声对消、通信信道均衡、雷达信号处理、生物医学信号增强、自适应噪声抵消甚至当信号和噪声频谱重叠、噪声占据的频谱时变或未知时固定滤波器束手无策自适应滤波器却能自行调节参数满足要求。6. 什么时候用哪个滤波器一张边界判断图学了这么多滤波器和谱估计方法真正做题或做工程时最容易困惑的是“到底该选哪个”。你可以把判断流程压缩成三步。第一步看信号统计特性是否已知信号平稳、自相关和互相关函数能拿到选维纳滤波系统能用状态方程描述、信号可能非平稳选卡尔曼滤波统计特性完全未知或环境在变选自适应滤波。第二步看滤波需求要求线性相位、波形不能失真选 FIR要求用最低阶数实现陡峭衰减、能容忍相位失真选 IIR但要检查极点位置保证稳定。第三步看谱分析目标观测数据长、只想要个直观的功率谱经典谱估计就够用数据短、还想分辨靠得很近的谱峰上现代谱估计比如 AR 模型加 Burg 递推。边界也很清楚。维纳滤波不能用在非平稳信号上硬用会出偏差卡尔曼滤波对模型准确性要求高模型错了滤波结果可能不收敛甚至发散自适应滤波的步长参数需要调试设得太大收敛过程会翻车设得太小等到天荒地老。这三种方法不是越高级越好而是各有各的适用圈。这份习题真正帮到我的地方不是提供了多少道答案而是把采样、变换、滤波、估计这几块知识串成了一条完整链路。那年复习时我还在对着公式死记硬背某位老师问了一句“你做完一道题能说出它卡在这条链路的哪一环吗”从那以后我每次复习现代数字信号处理都强制自己先画一遍这条链路连续信号进采样器变成离散序列再做变换看频谱然后根据场景挑滤波器或估计器。链路通了公式只是工具不再是黑匣子。希望帮到你。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?