数字滤波器基础、分析与结构
前置知识回顾
数字滤波器是前面所有 DSP 基础的汇合点。读这一节前,建议先把下面几条线串起来:
数字滤波器和模拟滤波器在功能上没有本质差别,目标都是保留某些频率成分、压制另一些频率成分。低通保留慢变化,高通强调快速变化,带通提取某个频带,带阻抑制某个频带。
区别在于实现方式。模拟滤波器由电阻、电容、电感或运放等硬件实现;数字滤波器由差分方程、系统函数和数值运算实现。一个 LTI 数字滤波器可以同时用三种方式描述:
- 差分方程:直接说明输入输出样本如何递推。
- 单位抽样响应:$h[n]$ 描述系统对 $\delta[n]$ 的响应,输出为 $y[n]=x[n]*h[n]$。
- 系统函数:$H(z)=Y(z)/X(z)$ 把时域递推变成复平面上的有理函数。
常系数差分方程的一般形式为
零初始条件下取 Z 变换,得到
这里用 Z 变换而不是直接用傅里叶变换,是因为 $H(z)$ 描述的是系统在整个复平面上的结构:分子给零点,分母给极点,收敛域还能进一步判断因果性和稳定性。傅里叶变换只看单位圆上的频率表现,即把 $z=e^{j\omega}$ 代入后得到的 $H(e^{j\omega})$。所以通常先用 Z 变换求系统函数,再从系统函数读出频率响应。
为什么专门看单位圆?因为 $z=re^{j\omega}$ 中,角度 $\omega$ 表示振荡频率,半径 $r$ 表示序列包络是否随时间指数增长或衰减。只有当 $r=1$ 时,输入 $e^{j\omega n}$ 才是幅度不变的纯频率分量。数字滤波器的“滤波效果”问的正是:输入某个频率的正弦或复指数后,输出被放大多少、相移多少。因此要看单位圆上的 $H(e^{j\omega})$,其中 $|H(e^{j\omega})|$ 是幅度响应,$\arg H(e^{j\omega})$ 是相位响应。
滤波器分析的核心就是读懂这个 $H(z)$:它的分子给零点,分母给极点;它在单位圆上的取值 $H(e^{j\omega})$ 就是频率响应。
FIR 与 IIR:有没有反馈,决定了系统性格
按单位抽样响应(impulse response)是否会无限延续,数字滤波器最常见地分为 FIR 和 IIR。这里的名字本身就说明了差别:
FIR / IIR 的英文全称
- FIR:Finite Impulse Response,有限长单位冲激响应滤波器。一个冲激输入进去,输出只响有限多拍,之后归零。
- IIR:Infinite Impulse Response,无限长单位冲激响应滤波器。一个冲激输入进去,由于系统内部有反馈,输出理论上会一直拖尾。
“单位冲激响应”可以理解成系统被敲一下之后的回声。FIR 像敲一下桌面:响几下就没了;IIR 像带回声的房间:声音会在内部反复反射,越来越小或者越来越大。这里的关键不是名字,而是有没有把过去的输出再喂回系统。
| 类型 | 英文 | 差分方程 | 系统函数 | 冲激响应 | 核心特征 |
|---|---|---|---|---|---|
| FIR | Finite Impulse Response | $y[n]=\sum_{m=0}^{M}b_m x[n-m]$ | $H(z)=\sum_{m=0}^{M}b_m z^{-m}$ | 有限长 | 无反馈,天然稳定,容易做线性相位 |
| IIR | Infinite Impulse Response | $y[n]=\sum_{m=0}^{M}b_mx[n-m]-\sum_{k=1}^{N}a_ky[n-k]$ | $H(z)=\frac{\sum_{m=0}^{M}b_mz^{-m}}{1+\sum_{k=1}^{N}a_kz^{-k}}$ | 通常无限长 | 有反馈,低阶高效,但稳定性由极点控制 |
FIR:只记住有限段过去输入
FIR 的输出只依赖当前和过去若干个输入样本,不依赖过去输出。例如二点滑动平均
对应的冲激响应只有两项:
这就是“有限长”的意思:冲激输入只让系统响两拍。因为没有反馈,系统不会自己把能量滚起来,所以 FIR 只要系数有限,就天然 BIBO 稳定。
IIR:把过去输出再反馈回来
IIR 的输出会依赖过去输出。最简单的一阶例子是
如果输入是一个单位冲激 $\delta[n]$,输出会变成
只要 $a\ne0$,这个序列理论上永远不会在有限时间后精确归零,所以叫 Infinite Impulse Response。它的好处是:用一个反馈系数就能形成很长的指数尾巴,因此低阶 IIR 就能做出较陡的频率选择性;风险是:如果反馈太强,也就是极点跑到单位圆外,尾巴会越滚越大,系统不稳定。
理想响应:完美矩形频响为什么不能直接实现
先把目标说清楚:所谓“理想低通”,就是希望所有低频原封不动通过,所有高频完全砍掉。若截止频率是 $\omega_c$,理想幅频响应可以写成
这张图就是它的样子:中间一段完全平坦,两侧突然掉到 0。它在频域非常漂亮,但“突然掉下去”这件事,正是麻烦的来源。
为什么会这样?因为冲激响应 $h_d[n]$ 是频率响应 $H_d(e^{j\omega})$ 的反 DTFT:
当 $n\ne0$ 时,积分结果为
当 $n=0$ 时,极限值为 $h_d[0]=\omega_c/\pi$。如果用 sinc 函数 的写法,也常写成
这里的重点不是记住某个写法,而是看懂图像:它不是只在有限几个采样点非零,而是向左、向右都无限延伸,并且一边振荡一边慢慢衰减。
于是理想低通有两个实现障碍。第一,它的 $h_d[n]$ 对所有正负 $n$ 都可能非零,长度无限;真实滤波器不能存储和计算无限多个抽头。第二,它在 $n<0$ 的位置也有值,这意味着输出当前样本时需要用到“未来输入”,所以通常是非因果的。
理想滤波器不是设计结果,而是逼近目标
课程里画理想低通,是为了说明“想要什么频率选择性”,不是说真实系统可以直接实现这个矩形响应。
真正的 FIR/IIR 设计,就是在通带起伏、阻带衰减、过渡带宽、阶数和稳定性之间折中:允许边界不那么锋利,换来因果、稳定、有限复杂度的系统。
四类基本滤波器:低通、高通、带通、带阻
四类基本滤波器可以先按“通带保留哪里、阻带压制哪里”来记。阅读时不要只记名字,而要盯住通带、阻带和过渡带的位置。
| 滤波器类型 | 通带保留 | 阻带压制 | 典型用途 |
|---|---|---|---|
| 低通 | 低频 | 高频 | 平滑、去高频噪声、抗混叠预滤波 |
| 高通 | 高频 | 低频 | 去直流、边缘/突变检测 |
| 带通 | 某一频段 | 频段外 | 提取载波、语音频段、谐振成分 |
| 带阻 | 除某一频段外 | 某一频段 | 陷波、去 50/60 Hz 工频干扰 |
实际设计时还要给出通带边界、阻带边界、通带起伏和阻带衰减。没有这些指标,就谈不上“设计”,只能说是“想要某种大概效果”。
前一组回答了“滤波器如何表示”。接下来要回答的是“如何从这个表示判断它到底在滤什么”。关键入口不是盯着差分方程的外形猜,而是把系统函数放到单位圆上看。
零极点几何:系统函数如何决定滤波效果
把 $z$ 限制在单位圆上,令 $z=e^{j\omega}$,就得到频率响应。若系统函数写成
则单位圆上某一点 $e^{j\omega}$ 的响应大小可理解为:
这给出一个非常好用的几何直觉:单位圆上的频点离零点越近,响应越小;离极点越近,响应越大。零点负责“挖坑”,极点负责“抬峰”。
直觉理解:极点像反馈回声的衰减因子
可以把一个因果 IIR 系统想成“输入激发一次,系统内部会一圈圈反馈回声”。一阶系统 $H(z)=1/(1-az^{-1})$ 的冲激响应是 $h[n]=a^n u[n]$:第一拍是 1,下一拍剩 $a$,再下一拍剩 $a^2$,之后是 $a^3,a^4,\ldots$。
如果 $|a|<1$,每绕一圈都乘上一个小于 1 的数,回声越来越小,尾巴虽然无限长,但总量有限,所以稳定;如果 $|a|>1$,每绕一圈都被放大,哪怕输入只有一个冲激,输出也会越滚越大,系统就不稳定。单位圆半径正好是“乘一次后不变大也不变小”的边界,所以极点必须落在单位圆内。
多极点系统也可以这样看:每个极点都对应一种指数模式。只要有一个极点在单位圆外,就有一种内部模式会放大;只有所有极点都在单位圆内,所有反馈模式才都会衰减。
例题:从差分方程判断 FIR/IIR 和频率特性
例题 1:判断滤波器类型和系统函数
题目:给定差分方程 $y[n]=0.5x[n]+0.5x[n-1]$。判断它是 FIR 还是 IIR,并求 $H(z)$。
- 看是否含过去输出:右端只有输入项 $x[n]$、$x[n-1]$,没有 $y[n-k]$,所以没有反馈。
- 取 Z 变换:$Y(z)=0.5X(z)+0.5z^{-1}X(z)$。
- 求系统函数:
$$H(z)=\frac{Y(z)}{X(z)}=0.5(1+z^{-1}).$$
- 读频率响应:$H(e^{j\omega})=0.5(1+e^{-j\omega})=e^{-j\omega/2}\cos(\omega/2)$。
答案:这是二点滑动平均 FIR 滤波器,低频 $\omega=0$ 处增益为 1,高频 $\omega=\pi$ 处增益为 0,具有低通倾向。
例题 2:由极点判断 IIR 稳定性和滤波倾向
题目:系统满足 $y[n]-ay[n-1]=x[n]$,其中 $0<a<1$。判断类型、稳定性和频率倾向。
- 类型:方程含过去输出 $y[n-1]$,因此是 IIR。
- 系统函数:
$$H(z)=\frac{1}{1-az^{-1}}.$$
- 极点:极点在 $z=a$。因 $0<a<1$,极点在单位圆内;对因果系统而言,ROC 在最外极点之外并包含单位圆,所以系统稳定。这个逻辑见 Z 变换笔记中的 ROC 解释。
- 频率响应:
$$|H(e^{j\omega})|=\frac{1}{|1-ae^{-j\omega}|}.$$
当 $\omega=0$ 时分母为 $|1-a|$,当 $\omega=\pi$ 时分母为 $|1+a|$,所以低频增益更大。
答案:这是稳定的一阶 IIR 低通滤波器。
设计流程:先定指标,再选 FIR/IIR,再谈实现
面对滤波器设计题,顺序不能反。不要一上来就问“用窗函数还是双线性变换”,而是先把需求写成指标:
- 通带和阻带边界在哪里。
- 通带允许多大起伏。
- 阻带至少要衰减多少。
- 是否要求线性相位。
- 是否更关心低阶数、低延迟或数值稳定。
如果要求线性相位且可以接受较高阶数,FIR 常更合适;如果希望较低阶实现陡峭响应,IIR 常更高效。后续具体设计方法包括:窗函数法、频率采样法、Parks-McClellan FIR 设计、巴特沃斯/切比雪夫/椭圆 IIR 设计、双线性变换等。
前面的 DTFT、DFT、Z 变换都在为滤波器服务。DTFT 给频率响应,DFT/FFT 给计算工具,Z 变换给系统函数和稳定性判据。滤波器把这些工具合成一个工程对象:给定指标,构造一个可实现系统。
如果继续深入,下一步通常会分成两条线:FIR 设计重在窗函数、线性相位和频率采样;IIR 设计重在模拟原型、频率变换和双线性变换。
复习速查:数字滤波器做题入口
| 问题 | 入口 | 判断标准 | 常见误区 |
|---|---|---|---|
| FIR/IIR 判断 | 看差分方程是否含过去输出 | 无反馈为 FIR,有反馈通常为 IIR | 把有限阶差分方程误认为 FIR |
| 稳定性 | 看极点位置 | 因果 IIR 极点必须在单位圆内 | 只看零点不看极点 |
| 频率响应 | 令 $z=e^{j\omega}$ | 读 $|H(e^{j\omega})|$ 和相位 | 只看幅度忽略相位 |
| 低通/高通判断 | 比较 $\omega=0$ 与 $\omega=\pi$ | 低频大为低通,高频大为高通 | 凭差分方程外观猜 |
| 理想响应可实现性 | 看 $h[n]$ 是否因果有限/稳定 | 突变频响常对应无限非因果冲激响应 | 把理想响应当真实系统 |
| 设计选择 | 先列指标 | 线性相位偏 FIR,低阶陡峭偏 IIR | 先选算法再补需求 |
数字滤波器的概念
滤波器
数字滤波器是对输入离散时间序列 $x(n)$ 进行运算、得到输出序列 $y(n)$ 的离散时间系统。它的任务不是“凭空产生新信号”,而是按照给定频率选择规则保留、削弱或改变信号中的某些频率分量:低通保留低频,高通保留高频,带通保留某个频带,带阻抑制某个频带。
系统函数
数字滤波器通常被看成线性时不变系统。若输入为 $x(n)$、输出为 $y(n)$,则系统函数定义为 $H(z)=Y(z)/X(z)$。当 $H(z)$ 写成 $z^{-1}$ 的有理分式时,分子系数 $b_k$ 对应输入延迟项,分母系数 $a_k$ 对应输出反馈项。
差分方程
从系统角度看,滤波器可以同时用三种语言描述:时域里的差分方程,$z$ 域里的系统函数 $H(z)$,以及工程实现里的结构图。差分方程告诉我们每一拍怎样递推;系统函数告诉我们零点、极点和频率响应;结构图则回答“这些加法器、乘法器、延迟器应该怎样连接”。
一个 $N$ 阶 IIR 滤波器的系统函数和差分方程分别为
分子实现零点(对 $x(n)$ 的加权延迟),分母实现极点(对 $y(n)$ 的加权延迟,即反馈)。结构设计的核心问题就是:如何用最少存储单元、最少乘法、最稳定的数值特性来实现同一 $H(z)$。
滤波器的功能与实现
无论滤波器多复杂,实现它所需的基本运算只有三种:加法、乘常数、单位延迟。
三种基本运算
| 运算 | 时域表示 | Z 域表示 | 在结构图中的角色 |
|---|---|---|---|
| 加法 | $y(n)=x_1(n)+x_2(n)$ | $Y(z)=X_1(z)+X_2(z)$ | 汇合节点,把多个支路输出相加 |
| 乘常数 | $y(n)=a\,x(n)$ | $Y(z)=a\,X(z)$ | 滤波器系数,决定每条支路权重 |
| 单位延迟 | $y(n)=x(n-1)$ | $Y(z)=z^{-1}X(z)$ | 存储一个采样周期,形成历史样本或状态 |
滤波器结构要比较什么?
- 存储量:需要多少个单位延迟器,也就是要保存多少个历史样本或状态。
- 运算量:每输出一个样本需要多少次乘法和加法。
- 数值稳定性:有限字长下,系数量化和舍入误差是否容易放大。
- 可调性:某个系数变化时,能否局部控制一对零点或极点。
- 并行性:不同支路能否同时计算,是否适合 FPGA、GPU 或多 MAC 单元 DSP。
数字滤波器的结构表示法
用这三种运算元件搭出滤波器,常见表示法有两种:方框图法和信号流图法。它们描述的是同一个计算过程,只是视角不同:方框图更像硬件连接图,信号流图更像代数关系图。
方框图法
方框图法用方框、箭头、加法节点、乘法系数和单位延迟器直接画出样本如何流动。它最适合从差分方程出发检查“先延迟、再乘系数、最后在哪里相加”。
二抽头 FIR 方框图可以直接按差分方程阅读:输入 $x(n)$ 分成两路,一路直接乘 $b_0$,另一路先经过一个单位延迟 $z^{-1}$ 得到 $x(n-1)$,再乘 $b_1$,最后两路相加得到输出。
| 支路 | 经过的操作 | 贡献项 |
|---|---|---|
| 直接支路 | 不延迟,只乘 $b_0$ | $b_0x(n)$ |
| 延迟支路 | 先经 $z^{-1}$,再乘 $b_1$ | $b_1x(n-1)$ |
| 输出节点 | 两路相加 | $y(n)=b_0x(n)+b_1x(n-1)$ |
上图对应一个最简单的二抽头 FIR:
如果差分方程含有过去输出项,例如 $y(n)=b_0x(n)+a_1y(n-1)$,方框图中就会出现从输出端经过 $z^{-1}$ 和系数 $a_1$ 回到加法节点的反馈支路。这正是 IIR 结构和 FIR 结构的图形区别。
信号流图法
信号流图法把每个中间变量画成节点,把乘常数、单位延迟和直接传递画成有向支路。它比方框图更紧凑,适合推导直接型、级联型、并联型,以及后面的转置定理。
graph LR
X(("x(n)")) -->|"b₀"| Y(("y(n)"))
X -->|"z⁻¹"| N1(("x(n-1)"))
N1 -->|"b₁"| Y
N1 -->|"z⁻¹"| N2(("x(n-2)"))
N2 -->|"b₂"| Y
这张信号流图对应三抽头 FIR:
节点表示变量,支路上的标注表示支路增益或延迟。这里从 $x(n)$ 到 $x(n-1)$、从 $x(n-1)$ 到 $x(n-2)$ 都必须经过一个单位延迟 $z^{-1}$;若一条支路不标传输系数,才默认增益为 1。多个支路汇入同一节点时,节点值等于所有输入支路信号之和。
课件第 11 页给出的是信号流图法的完整示例:先把差分方程中的每个延迟、系数和相加关系翻译成支路,再从输入节点沿有向边读到输出节点。它比前面的三抽头小例子更接近后面 IIR 直接型结构的画法。
两种表示法怎么选
| 表示法 | 更适合回答的问题 | 优势 | 局限 |
|---|---|---|---|
| 方框图法 | 这个滤波器怎么按硬件/程序步骤实现? | 直观,便于检查延迟、乘法和加法位置 | 高阶结构会很拥挤 |
| 信号流图法 | 这些结构是否等价?能否转置、级联或共享延迟? | 紧凑,便于代数变换和结构推导 | 初看不如方框图具象 |
掌握这两种表示法后,后面的结构就不再是孤立图形,而是同一件事的不同翻译:直接型从差分方程直接翻译,级联型从因式分解翻译,并联型从部分分式展开翻译。
特点
IIR(Infinite Impulse Response)滤波器的特点是:单位冲激响应 $h(n)$ 无限长;$H(z)$ 在有限 $z$ 平面上有极点;结构上存在输出到输入的反馈,是递归型的。
递归结构带来两个直接后果。第一,IIR 可以用较低阶数得到很陡的过渡带,因此同样指标下通常比 FIR 更省乘法器;第二,极点位置决定稳定性,只要极点受量化影响跑到单位圆外,系统就会失稳。所以 IIR 结构设计最关心的是极点控制、系数量化敏感度和内部状态动态范围。
为什么同一个 IIR 要有多种结构
一个系统函数 $H(z)$ 只规定了输入和输出之间的关系,并没有规定中间变量怎么存、乘法器怎么排、反馈支路怎么组织。直接 I 型、直接 II 型、级联型、并联型本质上是同一个 $H(z)$ 的不同“施工方案”。
四种 IIR 结构分别解决什么问题
| 结构 | 它从什么想法出发 | 主要解决的问题 | 什么时候用 |
|---|---|---|---|
| 直接 I 型 | 按差分方程原样连接 | 让公式和结构一一对应,便于学习和手算 | 低阶例题、概念说明、原型验证 |
| 直接 II 型 | 把零点网络和极点网络的延迟链合并 | 减少存储单元,得到最少延迟结构 | 存储紧张、阶数较低、浮点实现 |
| 级联型 | 把高阶系统拆成多个一阶/二阶节串联 | 降低系数量化敏感度,局部控制零极点 | 实际 IIR 实现最常用,尤其是 Biquad 级联 |
| 并联型 | 把系统拆成多个一阶/二阶支路相加 | 缩短误差传播路径,提高并行计算能力 | 并行硬件、模态分析、部分分式形式自然的系统 |
graph TD
A["拿到同一个 H(z)"] --> B{"目标是什么?"}
B -->|"先看懂公式怎么实现"| C["直接 I 型"]
B -->|"尽量少用延迟/存储"| D["直接 II 型"]
B -->|"高阶 IIR 要稳定可靠"| E["级联型二阶节"]
B -->|"硬件能并行、多支路同时算"| F["并联型"]
C --> G["学习、手算、低阶原型"]
D --> H["存储省,但内部状态动态范围要小心"]
E --> I["工程最常用:逐节控制零极点"]
F --> J["误差不串行传递,适合并行架构"]
基本结构
2.1 直接 I 型
按差分方程直接画出:先实现零点网络($M$ 个延迟+加权,对 $x$ 的横向抽头),再实现极点网络($N$ 个延迟+加权,对 $y$ 的反馈)。
直接 I 型结构
零点网络:$M$ 个延迟单元,$M+1$ 个乘法器。
极点网络:$N$ 个延迟单元,$N$ 个乘法器($a_0=1$ 不需乘)。
总延迟单元数:$M+N$。
课件第 16 页把直接 I 型和系统函数公式对应起来:分子多项式对应输入抽头网络,分母多项式对应输出反馈网络。因此直接 I 型不是凭空画出来的,而是把 $H(z)$ 的分子、分母分别按 $z^{-1}$ 延迟链展开。
直接 I 型的直观好处是"零点在前、极点在后",与差分方程一一对应,容易手画。缺点是延迟单元多,系数 $a_k,b_k$ 对极点/零点的控制不直观,且极点对系数变化非常敏感,容易出现不稳定或较大误差。
2.2 直接 II 型(正准型)
直接 I 型的零点网络和极点网络是级联的,可以把它们交换顺序。交换后,两个网络中间的延迟单元完全重合,合并后只需 $\max(M,N)$ 个延迟单元。课件第 17 面给出的直接 II 型可以理解成一条共享的状态链:先由反馈系数 $a_k$ 递推得到中间状态 $x'(n)$,再由前向系数 $b_k$ 从这些状态合成输出 $y(n)$。
因此直接 II 型的核心不是“换一种画法”,而是把原本分别服务于分子和分母的两组延迟记忆合并为同一组内部状态。若 $M=N$,直接 I 型需要 $2N$ 个延迟单元,直接 II 型只需要 $N$ 个;若 $M\ne N$,则需要 $\max(M,N)$ 个。它很省存储,所以也叫正准型(canonical form)。
直接 II 型(正准型 / Canonical Form)
把 $H(z)=H_1(z)\cdot H_2(z)$ 中 $H_1$(极点)和 $H_2$(零点)交换顺序,合并共用延迟链。
总延迟单元数:$\max(M,N)$(最少可能)。
总乘法器数:$M+N+1$(与直接 I 型相同)。
例题:三阶 IIR 直接 II 型实现
给定系统函数:
对应的差分方程:
分析系数:从 $H(z)$ 读出前向系数 $b_k=\{8,-4,11,-2\}$,反馈系数 $a_k=\{-\frac{5}{4},\frac{3}{4},-\frac{1}{8}\}$(注意符号:差分方程中反馈项系数是分母系数的相反数)。
直接 II 型实现:将 $H(z)$ 拆成 $H_1(z)\cdot H_2(z)$,其中 $H_1(z)$ 实现零点(前向支路),$H_2(z)$ 实现极点(反馈支路)。两者共享同一条延时链,只需 $\max(3,3)=3$ 个 $z^{-1}$ 延时单元:
- 反馈部分 $H_2(z)$:中间状态 $w(n)$ 由输入和反馈递推:
$$w(n)=x(n)+\tfrac{5}{4}w(n-1)-\tfrac{3}{4}w(n-2)+\tfrac{1}{8}w(n-3)$$
三个延时器分别存储 $w(n-1),w(n-2),w(n-3)$。
- 前向部分 $H_1(z)$:输出 $y(n)$ 从共享状态链抽头加权求和:
$$y(n)=8w(n)-4w(n-1)+11w(n-2)-2w(n-3)$$
| 参数 | 值 | 含义 |
|---|---|---|
| 阶数 $N$ | 3 | 分子分母均为三次 |
| 前向系数 $b_k$ | $\{8,-4,11,-2\}$ | 零点位置 |
| 反馈系数 $-a_k$ | $\{\frac{5}{4},-\frac{3}{4},\frac{1}{8}\}$ | 极点位置(符号取反) |
| 延时单元 | 3 个 $z^{-1}$ | 直接 II 型正准型,$\max(M,N)=3$ |
| 乘法器 | $4+3=7$ 个 | $b_0$ 至 $b_3$ 加 $-a_1$ 至 $-a_3$ |
如上图所示,$H_1(z)$(零点部分)在左侧:输入 $x(n)$ 从左进入,经反馈递推得到中间状态,再通过 $b_0,b_1,b_2,b_3$ 四条前向支路加权求和输出 $y(n)$。$H_2(z)$(极点部分)在右侧:输出端的 $y(n)$ 经 $z^{-1}$ 延时后分别乘 $-a_1,-a_2$ 反馈回加法节点。两条链共享同一组延时器,这就是直接 II 型比直接 I 型节省存储的核心。
Python 实现与仿真结果
用 Python 直接实现上述差分方程,对 100 个采样点的输入信号进行滤波:
x_1, x_2, x_3, y_1, y_2, y_3 = 0, 0, 0, 0, 0, 0
def filter(x):
global x_1, x_2, x_3, y_1, y_2, y_3
y = (8*x - 4*x_1 + 11*x_2 - 2*x_3
+ 1.25*y_1 - 0.75*y_2 + 0.125*y_3)
x_3 = x_2; x_2 = x_1; x_1 = x
y_3 = y_2; y_2 = y_1; y_1 = y
return y
for i in range(100):
y3[i] = filter(y[i])
从仿真结果可以观察到两个典型现象:
- 初始瞬态过冲:输出在 $n\approx 5$ 处飙升至 ~4900,远超输入信号的幅值范围(95~125)。这是因为滤波器启动时所有状态变量初始化为零(零初始条件),前几个采样点的反馈还未建立,前向系数 $b_0=8$ 的放大效应直接作用在输入上。
- 持续振铃:过冲之后输出并未迅速收敛,而是在 3500~4500 之间缓慢振荡。这说明分母的极点虽然最终使系统稳定(极点在单位圆内),但靠近单位圆的极点导致了缓慢衰减的振铃。输出量级(~1000~5000)比输入(~100)放大了约一个数量级,对应前向增益 $\sum|b_k|=8+4+11+2=25$ 的累积效果。
2.3 级联型(Cascade Form)
先把 $H(z)$ 的分子分母分别因式分解为零点和极点:
其中 $g_k$ 为实零点,$h_k$ 为复零点,$c_k$ 为实极点,$d_k$ 为复极点;$M=M_1+2M_2$,$N=N_1+2N_2$。再把共轭对组合成实系数二阶因子:
课件第 23 面进一步给出了级联型的信号流图法:每个一阶或二阶小节先单独画成信号流图,再按系统函数乘积的顺序首尾相接。这样读图时不需要一次面对完整高阶多项式,而是逐节检查每个子系统的零点、极点和延迟链。
课件第 24–25 面补充了级联型最关键的工程理解:当 $M=N=4$ 时,系统可拆成 2 个二阶节;当 $M=N=6$ 时,可拆成 3 个二阶节。每一节都有自己的 $\beta_{1k},\beta_{2k}$ 与 $\alpha_{1k},\alpha_{2k}$,所以调节第 $k$ 节时,主要影响第 $k$ 对零点和第 $k$ 对极点,而不是一次牵动整个高阶多项式。
课件第 20 面的级联型把高阶滤波器拆成若干个一阶/二阶小系统串联。每个二阶节(Biquad)只用 2 个延迟单元,负责一对共轭零点和一对共轭极点;整体 $H(z)$ 等于各节系统函数的乘积。这样:
- $\beta_{1k},\beta_{2k}$ 主要决定第 $k$ 节的零点位置,常用来塑造通带、阻带或陷波位置。
- $\alpha_{1k},\alpha_{2k}$ 决定第 $k$ 节的极点位置,直接影响峰值、带宽和稳定性。
- 每节只处理低阶多项式,系数量化误差不会一次性作用在高阶多项式上,数值灵敏度通常低于直接型。
- 实际实现时还可以调整二阶节顺序和每节增益分配,避免某一节内部信号过大而溢出。
2.4 并联型(Parallel Form)
把 $H(z)$ 做部分分式展开:
课件第 30 面给出了并联型的具体演示:先把系统函数展开成若干个简单支路,每条支路独立实现一个一阶或二阶子系统,最后在输出端求和。这个例子适合对照部分分式展开,理解“相加的系统函数”如何变成“并行的结构图”。
课件第 27 面的并联型来自部分分式展开:把一个高阶有理函数拆成若干个一阶/二阶子系统的和。输入 $x(n)$ 同时送入所有支路,各支路分别产生一个分量响应,最后把这些输出相加得到 $y(n)$。
当 $M<N$ 时不含 $G_k$ 项;当 $M\ge N$ 时需要先做长除法,前面的 $G_k z^{-k}$ 是直接前馈项;当 $N$ 为奇数时通常会有一个一阶节。并联型的特点是:
- 各并联支路互相独立,某一支路的舍入误差不会继续传入下一节,误差传播路径短。
- 多个支路可以同时计算,再在末端相加,适合 FPGA、SIMD 或多乘法器 DSP 这类并行硬件。
- 每个分母因子对应一组极点,所以可以较清楚地观察每组极点贡献的模态响应。
- 零点不是由某个单独支路直接控制,而是所有支路相加后整体形成,因此不如级联型那样便于单独调整零点。
IIR 结构实现例题
例题:用四种结构实现给定 IIR 滤波器
题目:设 IIR 数字滤波器差分方程为
试用直接 I 型、直接 II 型、级联型、并联型四种结构实现。
解:
步骤 1:写系统函数
步骤 2:直接 I 型
直接 I 型按原差分方程拆成两条延迟链:一条输入抽头链计算 $x(n)$ 与 $x(n-1)$ 的前向部分,另一条输出反馈链计算 $y(n-1)$ 与 $y(n-2)$ 的反馈部分。这个例子中分子一阶、分母二阶,因此需要 $1+2=3$ 个延迟单元。
| 链路 | 需要保存的状态 | 参与求和的项 | 延迟单元数 |
|---|---|---|---|
| 输入抽头链 | $x(n-1)$ | $x(n)$、$\tfrac{1}{4}x(n-1)$ | 1 |
| 输出反馈链 | $y(n-1), y(n-2)$ | $\tfrac{5}{4}y(n-1)$、$-\tfrac{3}{8}y(n-2)$ | 2 |
直接 I 型的实现顺序可以写成:先从输入链得到 $x(n)$ 与 $x(n-1)$ 的加权和,再从输出历史中取出两项反馈量,最后把四项相加得到 $y(n)$。它的优点是结构直观,缺点是延迟单元没有共享。
步骤 3:直接 II 型
直接 II 型把分母递归部分和分子前向部分串接,并把两条延迟链合并为一条内部状态链。令内部状态为 $w(n)$:
| 状态 | 含义 | 进入递归部分的系数 | 进入输出部分的系数 |
|---|---|---|---|
| $w(n)$ | 当前内部状态 | 主通路系数 1 | 主通路系数 1 |
| $w(n-1)$ | 一次延迟状态 | $\tfrac{5}{4}$ | $\tfrac{1}{4}$ |
| $w(n-2)$ | 二次延迟状态 | $-\tfrac{3}{8}$ | 0 |
直接 II 型只需要 2 个延迟单元。读它时不要再把输入延迟链和输出反馈链分开,而是盯住同一串状态 $w(n),w(n-1),w(n-2)$:递归方程负责生成 $w(n)$,输出方程负责从这些状态抽头得到 $y(n)$。
步骤 4:级联型
因式分解:分子 $1+z^{-1}/4=(1+0.25z^{-1})$,分母 $1-1.25z^{-1}+0.375z^{-2}=(1-0.75z^{-1})(1-0.5z^{-1})$。
| 级联节 | 系统函数 | 递推关系 | 控制的零极点 |
|---|---|---|---|
| 第 1 节 | $H_1(z)=\dfrac{1+0.25z^{-1}}{1-0.75z^{-1}}$ | $v(n)=u(n)+0.25u(n-1)+0.75v(n-1)$ | 零点 $-0.25$,极点 $0.75$ |
| 第 2 节 | $H_2(z)=\dfrac{1}{1-0.5z^{-1}}$ | $y(n)=v(n)+0.5y(n-1)$ | 极点 $0.5$ |
级联型不强调“按原公式一口气算完”,而是把系统拆成两个小滤波器串起来:$x(n)\to H_1(z)\to v(n)\to H_2(z)\to y(n)$。每个小节只控制一部分零极点,调试和定点实现都更稳。
步骤 5:并联型
部分分式展开:
解得 $A=4,B=-3$。两支路并联,输入同时进入两个一阶节,输出相加:
| 并联支路 | 系统函数 | 递推关系 | 输出合成 |
|---|---|---|---|
| 上支路 | $H_a(z)=\dfrac{4}{1-0.75z^{-1}}$ | $y_a(n)=4x(n)+0.75y_a(n-1)$ | $y(n)=y_a(n)+y_b(n)$ |
| 下支路 | $H_b(z)=\dfrac{-3}{1-0.5z^{-1}}$ | $y_b(n)=-3x(n)+0.5y_b(n-1)$ |
并联型的每条支路独立计算一个一阶系统的响应,最后相加。它牺牲了“零点单独可调”的直观性,但支路可以并行运行,误差也不会像级联那样从前一节继续传到后一节。
例题:课件原题 — 三阶 IIR 四种结构实现
题目:设 IIR 数字滤波器系统函数为
试用直接 I 型、直接 II 型(正准型)、级联型、并联型四种结构实现。
解:
步骤 1:识别参数
分子系数 $b_0=8, b_1=-4, b_2=11, b_3=-2$($M=3$);分母系数 $a_1=5/4, a_2=-3/4, a_3=1/8$($N=3$)。
步骤 2:直接 I 型
先画零点网络(4 个抽头,$8, -4, 11, -2$),再画极点网络(3 个反馈,$5/4, -3/4, 1/8$),共用 $3+3=6$ 个延迟单元。
步骤 3:直接 II 型(正准型)
交换零极点网络顺序,合并中间 3 个延迟单元,共用 $\max(3,3)=3$ 个延迟单元。结构更紧凑。
步骤 4:级联型
对分母因式分解:$1-\frac{5}{4}z^{-1}+\frac{3}{4}z^{-2}-\frac{1}{8}z^{-3}=(1-\frac{1}{4}z^{-1})(1-z^{-1}+\frac{1}{2}z^{-2})$。
但通常优先将共轭复根组合为二阶节。分母的三个根为 $z_1=1/4$(实根)和 $z_{2,3}=\frac{1}{2}(1 \pm j)$(共轭复根),二阶因子为 $1-z^{-1}+\frac{1}{2}z^{-2}$。
分子 $8-4z^{-1}+11z^{-2}-2z^{-3}$ 同理分解为实系数因子的乘积。
一个一阶节和一个二阶节级联。
步骤 5:并联型
对 $H(z)$ 做部分分式展开,由于 $M=N$,先做长除法提取常数项,再对真分式部分展开。
转置定理
转置定理(Transposition Theorem)
将网络中所有支路方向反转,输入输出交换位置,系统函数 $H(z)$ 不变。转置后的直接 I 型等价于直接 II 型的"转置型",延迟单元数不变。
| 结构 | 延迟单元 | 核心优点 | 核心缺点 |
|---|---|---|---|
| 直接 I 型 | $M+N$ | 直观,与差分方程对应 | 延迟多,系数敏感 |
| 直接 II 型 | $\max(M,N)$ | 最少延迟,正准型 | 系数仍敏感 |
| 级联型 | $N$ | 零极点独立可调 | 需因式分解 |
| 并联型 | 较多 | 误差最小,可并行 | 不能调零点 |
IIR 的难点来自反馈:结构稍有变化,内部状态、极点灵敏度和误差传播方式就会不同。接下来转到 FIR,问题会换一个方向:没有反馈以后,稳定性压力减小,重点变成怎样利用有限长冲激响应、频域采样和线性相位来减少运算或改善实现。
特点
FIR(Finite Impulse Response)滤波器的特点是:$h(n)$ 只在有限个 $n$ 处非零;$H(z)$ 无极点(除 $z=0$ 处的 $N-1$ 阶极点),在有限 $z$ 平面处处收敛;结构上非递归,没有反馈。
没有反馈意味着 FIR 天然稳定:只要输入有界,有限个输入样本的加权和一定有界。它还可以通过 $h(n)$ 的偶对称或奇对称设计出严格线性相位,因此在语音、通信、图像这类关心波形形状的场景中非常常用。代价是同样的幅频指标下,FIR 往往需要比 IIR 更高的阶数。
基本结构
课件第 38 面开始进入 FIR 数字滤波器结构:由于 FIR 没有反馈,所有基本结构都围绕有限长冲激响应 $h(n)$ 的不同组织方式展开。
FIR 系统函数
$h(n)$ 是 $N$ 点序列,$H(z)$ 是 $z^{-1}$ 的 $N-1$ 次多项式。不同 FIR 结构的区别,不在于系统函数是否改变,而在于怎样组织这些延迟、乘法和加法。
为什么 FIR 也要分这么多结构
| 结构 | 它利用了什么性质 | 主要用途 | 直觉 |
|---|---|---|---|
| 横截型 | 直接利用卷积和公式 | 通用 FIR、教材例题、自适应滤波 | 每个抽头就是一个 $h(k)$ |
| 转置横截型 | 利用转置定理保持 $H(z)$ 不变 | 流水线实现、某些硬件 MAC 结构 | 先乘系数,再沿链路逐级累加 |
| 级联型 | 把 $H(z)$ 分解成零点因子 | 需要控制零点位置的 FIR | 一节负责一对零点 |
| 频率抽样型 | 用频率采样值 $H(k)$ 表示滤波器 | 直接按频域采样点调节频响 | 改一个 $H(k)$ 就是在改一个频点附近的形状 |
| 线性相位型 | 利用 $h(n)$ 的偶对称或奇对称 | 语音、通信、图像等需要波形保真的场景 | 对称抽头先相加/相减,乘法次数约减半 |
| FFT 快速卷积 | 用频域乘法代替长时域卷积 | 长 FIR、流式音频、实时卷积 | 滤波器太长时,先变到频域再乘更便宜 |
3.1 横截型(卷积型 / 直接型)
课件第 39 面说明横截型结构。它直接用差分方程实现:$N-1$ 个延迟单元组成延时链,$N$ 个抽头分别乘 $h(0),h(1),\ldots,h(N-1)$,再相加。这就是线性移不变系统的卷积和公式。
横截型的优点是最直观:每个抽头对应一个冲激响应样本,改某个 $h(k)$ 就是改第 $k$ 条抽头的乘法系数。它常作为理解 FIR 的基准结构,也常用于系数需要频繁更新的自适应 FIR。
3.2 转置横截型与级联型
课件第 40 面先用转置定理把横截型变换为等价的转置横截型:将所有支路方向反转,输入输出互换,系统函数 $H(z)$ 不变。转置后,输入信号先分配到各个乘法器,再沿着延迟链逐级累加,延迟单元数仍为 $N-1$。
第 40 面同时给出 FIR 级联型。级联型把 $H(z)$ 分解为实系数一阶或二阶因子的乘积:
$N$ 为偶数时共 $N/2$ 个二阶节;$N$ 为奇数时有一个一阶节($\beta_{2k}=0$)。每节主要对应一对零点,因此级联型适合从零点分布理解和调节 FIR;缺点是需要先因式分解,且节次顺序和系数缩放会影响有限字长误差。
3.3 频率抽样型
课件第 43 面说明频率抽样型。它利用 DFT 频域采样定理,把 $H(z)$ 用 $N$ 个频率采样值 $H(k)$ 表示:
这可以看成两部分级联:
- 梳状滤波器 $1-z^{-N}$:在单位圆上有 $N$ 个等间隔零点 $\omega_k=2\pi k/N$,频率响应为 $|2\sin(N\omega/2)|$。
- 谐振器组 $\sum H(k)/(1-W_N^{-k}z^{-1})$:每个一阶节在单位圆上有一个极点 $\omega_k=2\pi k/N$,正好与梳状滤波器的零点抵消,使得 $\omega=2\pi k/N$ 处的频率响应等于 $H(k)$。
3.3b 修正的频率抽样型
上面标准频率抽样型的极点恰好落在单位圆上 $z_k=W_N^{-k}=e^{j2\pi k/N}$,在有限字长实现时极点可能漂移到单位圆外导致不稳定。工程解决方案是把所有极点(连同梳状滤波器的零点)从单位圆收缩到半径 $r<1$ 的圆上。
修正后的系统函数为
由于 $H(k)$ 和 $H(N-k)$ 互为共轭($h(n)$ 为实序列时),可以将第 $k$ 个和第 $(N-k)$ 个谐振器合并为一个实系数二阶网络:
其中 $\beta_{0k}=2\,\mathrm{Re}[H(k)]$,$\beta_{1k}=-2r\,\mathrm{Re}[H(k)W_N^k]$。这样每个二阶节都是实系数的,极点稳定地位于半径 $r$ 的圆上。
修正频率抽样型 vs 标准频率抽样型
| 特性 | 标准型 | 修正型 ($r<1$) |
|---|---|---|
| 极点位置 | 单位圆 $|z|=1$ | 半径 $r<1$ 的圆 |
| 稳定性 | 有限字长下可能不稳定 | 保证稳定 |
| 零极点抵消 | 精确抵消 | 近似抵消($r^N \approx 1$ 时误差小) |
| 二阶节系数 | 复数(需配对合并) | 实系数 |
3.4 线性相位型
当 FIR 滤波器的单位冲激响应满足偶对称 $h(n)=h(N-1-n)$ 或奇对称 $h(n)=-h(N-1-n)$ 时,相位响应具有严格的线性特性:
- 偶对称(情况 I、II):$\theta(\omega)=-\frac{N-1}{2}\omega$,纯线性相位。
- 奇对称(情况 III、IV):$\theta(\omega)=-\frac{N-1}{2}\omega+\frac{\pi}{2}$,线性相位加 $90°$ 相移。
利用对称性,可以把乘法次数减少约一半。根据 $N$ 的奇偶和对称性,线性相位 FIR 有四种情况:
线性相位 FIR 的四种情况
| 情况 | 对称性 | $N$ | 群延迟 | 频率响应特点 |
|---|---|---|---|---|
| I | $h(n)=h(N\!-\!1\!-\!n)$ | 奇 | $(N\!-\!1)/2$ | 纯线性相位 |
| II | $h(n)=h(N\!-\!1\!-\!n)$ | 偶 | $(N\!-\!1)/2$ | $\omega=\pi$ 处必为零 |
| III | $h(n)=-h(N\!-\!1\!-\!n)$ | 奇 | $(N\!-\!1)/2$ | $\omega=0,\pi$ 处必为零 |
| IV | $h(n)=-h(N\!-\!1\!-\!n)$ | 偶 | $(N\!-\!1)/2$ | $\omega=0$ 处必为零 |
$N$ 为奇数(情况 I)时,对称中心在整数样点 $n=(N-1)/2$,所有 $h(n)$ 都可配对。结构上,对称位置的两个延迟输出相加(偶对称取 $+1$)或相减(奇对称取 $-1$),再乘以系数 $h(n)$,乘法次数从 $N$ 减为 $(N+1)/2$。
$N$ 为偶数(情况 II)时,对称中心在 $n=(N-1)/2$ 处(非整数样点),没有单独的中心项。乘法次数从 $N$ 减为 $N/2$。
线性相位 FIR 在通信、图像处理中非常重要,因为线性相位意味着所有频率分量延迟相同,信号波形不会失真。
| 结构 | 延迟单元 | 核心优点 | 适用场景 |
|---|---|---|---|
| 横截型 | $N-1$ | 简单直观 | 通用 |
| 级联型 | $N-1$ | 控制零点对 | 需调零点时 |
| 频率抽样型 | $N$ | 改 $H(k)$ 即改频响 | 频域设计 |
| 线性相位型 | $N-1$ | 乘法减半,相位线性 | 波形保真 |
用 DFT/FFT 实现 FIR 滤波
时域卷积 $y(n)=x(n)*h(n)$ 在频域等价于乘法 $Y(k)=X(k)\cdot H(k)$。当 FIR 滤波器的单位冲激响应 $h(n)$ 较长(比如 $N>64$)时,直接时域卷积需要 $N$ 次乘累加(MAC)运算,而用 FFT 在频域做乘法的计算量反而更小。
基本原理
设 FIR 滤波器 $h(n)$ 长度为 $M$,输入 $x(n)$ 长度为 $L$。线性卷积结果长度为 $L+M-1$。用 DFT 计算线性卷积的步骤:
- 将 $h(n)$ 补零到 $N\ge L+M-1$ 点
- 将 $x(n)$ 补零到 $N$ 点
- 分别做 $N$ 点 DFT:$H(k)=\mathrm{DFT}\{h(n)\}$,$X(k)=\mathrm{DFT}\{x(n)\}$
- 频域相乘:$Y(k)=X(k)\cdot H(k)$
- IDFT 恢复:$y(n)=\mathrm{IDFT}\{Y(k)\}$
当 $N$ 取 2 的幂时,FFT 的计算复杂度为 $O(N\log N)$,而直接卷积为 $O(N\cdot M)$。当 $M$ 较大时 FFT 方法显著更快。
实际应用中输入信号通常是无限长的流式数据(如音频),需要分段处理。两种经典方法:
重叠相加法(Overlap-Add)
将长序列 $x(n)$ 分成每段长 $L$ 的无重叠子段 $x_m(n)$。每段与 $h(n)$ 做 $N$ 点循环卷积($N\ge L+M-1$),结果长度为 $L+M-1$,相邻段的输出有 $M-1$ 个样本重叠,将重叠部分相加即可。
流程图:
graph LR A["x(n) 分段"] --> B["补零到 N 点"] B --> C["N 点 FFT"] C --> D["乘以 H(k)"] D --> E["N 点 IFFT"] E --> F["重叠相加"] F --> G["y(n)"]
重叠保留法(Overlap-Save)
每段输入取 $N$ 点,但相邻段有 $M-1$ 点重叠(每段前 $M-1$ 个点是上一段的后 $M-1$ 个点)。每段做 $N$ 点循环卷积后,丢弃前 $M-1$ 个受缠绕效应影响的样本,保留后 $L=N-M+1$ 个有效样本拼接输出。
FIR 结构实现例题
例题:FIR 滤波器横截型与转置型结构
题目:设 FIR 滤波器差分方程为
试画出横截型结构及其转置型结构。
解:
步骤 1:识别参数
滤波器长度 $N=4$,系数 $h(0)=8,h(1)=-4,h(2)=11,h(3)=-2$。需要 $N-1=3$ 个延迟单元。
步骤 2:横截型(直接型)
输入 $x(n)$ 进入延时链,依次得到 $x(n-1),x(n-2),x(n-3)$,分别乘以 $8,-4,11,-2$ 后相加得 $y(n)$。
步骤 3:转置型结构
应用转置定理:将所有支路方向反转,输入输出互换。转置后:输入信号先分成 4 条支路,分别乘以 $8,-4,11,-2$,再通过 3 个串联的延迟单元沿反向传播,在节点处相加。两种结构的 $H(z)$ 完全相同:
至此,FIR 部分已经从时域横截型讲到频域快速卷积。它和 IIR 的结构选择标准不同:IIR 首先要管住极点和反馈误差,FIR 则更多是在乘法次数、频域调节、线性相位和分段卷积之间做取舍。
同一个滤波器指标通常可以落到多种结构上。真正实现时,不是只问“哪个公式正确”,而是问“这个平台上哪个结构更稳、更省、更容易调”。选择时需综合考虑延迟、系数灵敏度、量化误差、并行度和可调度性。
结构选择速查
- 直接型:仅用于理论分析或低阶原型验证。高阶时系数灵敏度极高,$a_k$ 微小变化就可能把极点推出单位圆。
- 级联型:最常用。每节二阶,零极点独立可调,便于模块化设计和调试。适合定点 DSP 实现。
- 并联型:对并行架构友好(GPU/FPGA),运算误差最小。适合需要高速实时处理的场景。
- 频率抽样型:适合频域自适应滤波,修改 $H(k)$ 即可快速改变频响。注意极点在单位圆上的稳定性问题。
复习速查
- 三种基本运算:加法、乘常数、单位延迟($z^{-1}$)。
- 直接 II 型:交换零极点顺序,共用延迟链,延迟单元最少($\max(M,N)$)。
- 级联型:零极点因式分解为二阶节,独立可调,最常用。
- 并联型:部分分式展开,误差最小,可并行。
- 频率抽样型:梳状滤波器 + 谐振器组,改 $H(k)$ 即改频响。
- 快速卷积:频域乘法代替时域卷积,$O(N\log N)$ vs $O(NM)$,长 FIR 时显著更快。
- 重叠相加/保留:流式数据的分段卷积方法,处理无限长输入。
- 线性相位 FIR:$h(n)=\pm h(N-1-n)$,四种情况,乘法减半,相位严格线性。
- 修正频率抽样型:极点收缩到 $r<1$ 的圆上,解决有限字长稳定性。
参考来源
- 本地课程材料:《数字信号处理教程(第五版)》第 5-7 章;第二讲作业与系统函数、频率响应相关题型。
- MIT OCW · Digital Signal Processing:用于核对数字滤波器频率响应与 FIR/IIR 基本概念。
- Stanford EE264 · Digital Signal Processing:用于补充滤波器设计的课程视角。
- The Scientist and Engineer's Guide to DSP:用于补充滤波器直觉和工程解释。
- NI · Pole-Zero Plots for Digital Filters:用于补充零极点几何解释。
- 课程讲义:第五讲《数字滤波器的基本结构》
- 教材:程佩青《数字信号处理教程》第 5 章
- Oppenheim & Schafer, Discrete-Time Signal Processing, Chap. 6
- Overlap-Add Method, Wikipedia:重叠相加法的详细数学推导
- 基于 FFT 的快速 FIR,知乎:快速卷积的工程实现解析
- FFT-Based FIR Filtering Using Overlap-Add Method:Matlab 实现参考