滤波器(数字&模拟)

一、模拟滤波器

二、数字滤波器

数字滤波器是数字信号处理的核心工具,作用是对离散时间信号进行频率选择——保留想要的频率成分,抑制不想要的部分。根据系统的冲激响应是否有限,分为两大类:FIR(有限冲激响应)和 IIR(无限冲激响应)。

2.1 FIR 滤波器

2.1.1 原理

什么是 FIR

FIR(Finite Impulse Response,有限冲激响应)滤波器的输出只取决于当前和过去有限个输入值的加权和,不存在输出到输入的反馈。它的差分方程为:

y[n]=k=0Nh[k]x[nk]y[n] = \sum_{k=0}^{N} h[k] \cdot x[n-k]

展开写就是:

y[n]=h[0]x[n]+h[1]x[n ⁣ ⁣1]+h[2]x[n ⁣ ⁣2]++h[N]x[n ⁣ ⁣N]y[n] = h[0] \cdot x[n] + h[1] \cdot x[n\!-\!1] + h[2] \cdot x[n\!-\!2] + \cdots + h[N] \cdot x[n\!-\!N]

其中:

  • x[n]x[n] 是当前输入采样值,x[nk]x[n-k]kk 个采样周期之前的输入
  • h[k]h[k] 是滤波器系数(也叫 tap 系数或冲激响应)
  • NN 是滤波器的阶数,N+1N+1 是 tap 数(系数个数)
  • y[n]y[n] 是当前输出

整个计算就是一个”滑动窗口内的加权求和”:窗口宽度为 N+1N+1,每个位置的权重由 h[k]h[k] 决定。

Z 域传递函数

对差分方程做 Z 变换,得到传递函数:

H(z)=k=0Nh[k]zk=h[0]+h[1]z1+h[2]z2++h[N]zNH(z) = \sum_{k=0}^{N} h[k] \cdot z^{-k} = h[0] + h[1] \cdot z^{-1} + h[2] \cdot z^{-2} + \cdots + h[N] \cdot z^{-N}

分子是 NN 阶多项式,分母为 1(没有反馈极点),这就是 FIR “有限”的原因:系统只有零点没有极点(极点全在原点),冲激响应在 NN 个采样后自然归零,不会像 IIR 那样无限延续。

频率响应

z=ejωz = e^{j\omega}(单位圆上的点),得到频率响应:

H(ejω)=k=0Nh[k]ejkωH(e^{j\omega}) = \sum_{k=0}^{N} h[k] \cdot e^{-jk\omega}

其中 ω=2πffs\omega = \frac{2\pi f}{f_s} 是归一化角频率,ff 是实际频率,fsf_s 是采样率。

幅度响应为:

H(ejω)=k=0Nh[k]ejkω|H(e^{j\omega})| = \left| \sum_{k=0}^{N} h[k] \cdot e^{-jk\omega} \right|

转成 dB 表示:

A(f)=20log10H(ejω)dBA(f) = 20 \cdot \log_{10} |H(e^{j\omega})| \quad \text{dB}
线性相位特性

FIR 滤波器最重要的优势是可以实现严格的线性相位。当系数满足对称条件 h[k]=h[Nk]h[k] = h[N-k] 时,相位响应为:

H(ejω)=N2ω\angle H(e^{j\omega}) = -\frac{N}{2} \cdot \omega

相位是频率的线性函数,这意味着所有频率成分经过滤波器后的延迟量相同,都是 N/2N/2 个采样周期。信号的波形形状不会因为相位失真而畸变,只是整体延迟了一段时间。

这个性质对超声成像、通信系统等对波形保真度要求高的应用至关重要。IIR 滤波器做不到严格的线性相位。

窗函数设计法

设计 FIR 滤波器最直观的方法是窗函数法。以低通滤波器为例:

第一步,写出理想低通滤波器的冲激响应(无限长):

hd[n]=ωcπsinc(ωcπ(nN2))=sin(ωc(nN/2))π(nN/2)h_d[n] = \frac{\omega_c}{\pi} \cdot \text{sinc}\left(\frac{\omega_c}{\pi}(n - \frac{N}{2})\right) = \frac{\sin(\omega_c(n - N/2))}{\pi(n - N/2)}

其中 ωc=2πfcfs\omega_c = \frac{2\pi f_c}{f_s} 是截止频率对应的归一化角频率。

第二步,用窗函数 w[n]w[n] 截断为有限长度:

h[n]=hd[n]w[n],n=0,1,,Nh[n] = h_d[n] \cdot w[n], \quad n = 0, 1, \ldots, N

不同的窗函数在”主瓣宽度”和”旁瓣衰减”之间做取舍:

窗函数 阻带衰减 主瓣宽度 特点
矩形窗 -13 dB 4π/(N+1)4\pi/(N+1) 频率分辨率最高,但旁瓣最大
汉宁窗 -31 dB 8π/(N+1)8\pi/(N+1) 旁瓣下降快(-18 dB/oct)
汉明窗 -43 dB 8π/(N+1)8\pi/(N+1) 工程中最常用,平衡性好
布莱克曼窗 -58 dB 12π/(N+1)12\pi/(N+1) 阻带衰减最大,但过渡带最宽

阻带衰减越大意味着被滤掉的频率被抑制得越彻底,但代价是过渡带(从通带到阻带的过渡区域)越宽。对于固定的窗函数,增大阶数 NN 可以收窄过渡带但不能改善阻带衰减,阻带衰减由窗函数类型决定。

窗函数的数学表达式:

矩形窗:w[n]=1w[n] = 1

汉明窗:w[n]=0.540.46cos(2πnN)w[n] = 0.54 - 0.46\cos\left(\frac{2\pi n}{N}\right)

汉宁窗:w[n]=0.50.5cos(2πnN)w[n] = 0.5 - 0.5\cos\left(\frac{2\pi n}{N}\right)

布莱克曼窗:w[n]=0.420.5cos(2πnN)+0.08cos(4πnN)w[n] = 0.42 - 0.5\cos\left(\frac{2\pi n}{N}\right) + 0.08\cos\left(\frac{4\pi n}{N}\right)


2.1.2 一阶 FIR

一阶 FIR 是最简单的情况(N=1N=1,2 个 tap):

y[n]=h[0]x[n]+h[1]x[n1]y[n] = h[0] \cdot x[n] + h[1] \cdot x[n-1]
一阶 FIR 差分器(高通)

h[0]=1,  h[1]=1h[0] = 1, \; h[1] = -1

y[n]=x[n]x[n1]y[n] = x[n] - x[n-1]

这就是一阶差分,频率响应为:

H(ejω)=1ejω=ejω/22jsin(ω/2)H(e^{j\omega}) = 1 - e^{-j\omega} = e^{-j\omega/2} \cdot 2j \sin(\omega/2)

幅度响应 H=2sin(ω/2)|H| = 2|\sin(\omega/2)|ω=0\omega=0(直流)时为 0,ω=π\omega=\pi(奈奎斯特频率)时为 2。这是一个高通特性——频率越高幅度越大。

一阶 FIR 平均器(低通)

h[0]=0.5,  h[1]=0.5h[0] = 0.5, \; h[1] = 0.5

y[n]=0.5x[n]+0.5x[n1]y[n] = 0.5 \cdot x[n] + 0.5 \cdot x[n-1]

相邻两个采样取平均,频率响应为:

H=cos(ω/2)|H| = |\cos(\omega/2)| ω=0\omega=0 时为 1(直流全通),ω=π\omega=\pi 时为 0(最高频完全抑制)。这是最简单的低通滤波器,但过渡带非常宽,衰减只有 6-6 dB/oct,实际工程中几乎不会单独使用。
一阶 FIR 的局限性

一阶 FIR 只有 2 个系数,无法实现陡峭的截止特性。它的滚降斜率只有 -6 dB/oct(-20 dB/dec),无论怎么调系数都不可能超过这个限制。要想得到更好的滤波效果,必须增加阶数。


2.1.3 多阶 FIR

阶数与性能的关系

增加阶数 NN 的效果:

  • 过渡带变窄:从通带到阻带的过渡更陡峭
  • 群延迟增大:固定为 N/2N/2 个采样周期,阶数越高延迟越大
  • 资源消耗增大N+1N+1 个乘法器 + NN 个加法器 + NN 个延迟寄存器
  • 阻带衰减不变:由窗函数类型决定,和阶数无关

工程中需要在”过渡带宽度”和”延迟/资源”之间折中。粗略估算公式(汉明窗):

N8πΔω=4fsΔfN \approx \frac{8\pi}{\Delta\omega} = \frac{4 f_s}{\Delta f}

其中 Δf\Delta f 是期望的过渡带宽度(Hz)。例如 fs=40f_s = 40 MHz,期望过渡带 2 MHz,则 N4×40/2=80N \approx 4 \times 40 / 2 = 80 阶。


2.1.4 FIR 交互仿真

下方交互组件支持调节滤波器类型(低通/高通/带通)、窗函数、阶数、采样频率和截止频率,实时观察幅度响应、相位响应、冲激响应和系数值:

仿真建议
  1. 观察阶数对过渡带的影响:固定汉明窗 + 低通 + fc=5MHz + fs=40MHz,把阶数从 4 拖到 128,观察过渡带逐渐变窄的过程,同时注意阻带衰减始终维持在 -43 dB 附近不变

  2. 对比不同窗函数:固定阶数 32 + 低通 + fc=5MHz,依次切换矩形窗/汉宁窗/汉明窗/布莱克曼窗,观察旁瓣高度和主瓣宽度的变化——阻带衰减依次改善但过渡带依次变宽

  3. 观察线性相位:切到”相位响应”标签页,可以看到相位是频率的线性函数(一条直线),斜率 =N/2= -N/2,阶数越高斜率越陡

  4. 系数对称性:切到”冲激响应”标签页,可以直观看到 h[k]h[k] 关于中心 N/2N/2 对称,这就是线性相位的充要条件

  5. 带通滤波器:切换到带通模式,可以看到两个截止频率之间的通带,以及通带两侧的衰减。带通 FIR 的阶数通常需要比同等过渡带的低通/高通更高


2.1.5 插值与滤波的边界

为什么要讨论这个问题

如果你看了前面的 FIR 原理,再看 interp.v 中的插值公式:

y=1r0+6r1+3r28y = \frac{-1 \cdot r_0 + 6 \cdot r_1 + 3 \cdot r_2}{8}

你一定会觉得:这不就是一个 3-tap FIR 滤波器吗?系数 h=[1/8,  6/8,  3/8]h = [-1/8, \; 6/8, \; 3/8],延迟线 + 乘加 + 求和,和标准 FIR 的结构一模一样。

没错,插值就是一种特殊的 FIR 滤波器。两者的数学形式完全相同:

y[n]=k=0Nh[k]x[nk]y[n] = \sum_{k=0}^{N} h[k] \cdot x[n-k]

硬件结构也完全相同:寄存器链 + 系数乘法 + 加法器。FPGA 综合出来的电路长得一样,不存在一种叫”插值器”的硬件和一种叫”滤波器”的硬件。

那区别到底在哪

区别不在数学结构上,而在设计系数时的目标不同

滤波器的系数来自频率指标。 你先说”我要截止频率 5 MHz、阻带衰减 40 dB 的低通”,然后用窗函数法或优化算法在频域上设计系数。设计目标是让幅度响应曲线长成你想要的形状。

插值器的系数来自时间偏移量。 你先说”我要估算两个采样点之间偏移 0.5 个周期处的值”,然后用 Lagrange 插值公式算系数。设计目标是让输出在时间轴上准确地落在你指定的位置。

同一组系数 [1,6,3]/8[-1, 6, 3]/8,如果你是从 Lagrange 公式在 p=0.5p=0.5 处算出来的,那它叫插值器;如果你恰好通过频域优化也得到了这组系数,那它叫滤波器。系数一样,电路一样,只是设计出发点不同。

为什么插值器会”顺带”做低通

因为”在时间轴上做平滑插值”和”在频率轴上做低通滤波”是同一件事的两种描述。

以 interp.v 为例,它把 40 MHz 采样率提升到 80 MHz。从频域的角度看,上采样的标准做法是:在原始采样点之间插入零值,然后用低通滤波器去掉因上采样引入的 20~40 MHz 镜像频谱。Lagrange 插值器本质上就在做这个低通滤波,只不过它的系数不是从频率指标设计的,而是从时域的插值精度推导的。

工程实例:interp.v 的频率响应推导

现在定量分析这个”顺带的低通”到底滤了多少。

interp.v 的插值系数为 h[0]=1/8,  h[1]=6/8,  h[2]=3/8h[0] = -1/8, \; h[1] = 6/8, \; h[2] = 3/8,采样率 fs=40f_s = 40 MHz。

频率响应:

H(ejω)=h[0]+h[1]ejω+h[2]e2jω=18+68ejω+38e2jωH(e^{j\omega}) = h[0] + h[1] \cdot e^{-j\omega} + h[2] \cdot e^{-2j\omega} = -\frac{1}{8} + \frac{6}{8}e^{-j\omega} + \frac{3}{8}e^{-2j\omega}

幅度响应取模。先分离实部和虚部:

Re(H)=18+68cosω+38cos2ω\text{Re}(H) = -\frac{1}{8} + \frac{6}{8}\cos\omega + \frac{3}{8}\cos 2\omega Im(H)=68sinω38sin2ω\text{Im}(H) = -\frac{6}{8}\sin\omega - \frac{3}{8}\sin 2\omega H(ejω)=Re2+Im2|H(e^{j\omega})| = \sqrt{\text{Re}^2 + \text{Im}^2}

下面在几个关键频率处逐一代入计算。

直流(f=0f = 0 MHz):

ω=0,cos0=1,sin0=0\omega = 0, \quad \cos 0 = 1, \quad \sin 0 = 0 Re=18+68+38=1+6+38=88=1\text{Re} = -\frac{1}{8} + \frac{6}{8} + \frac{3}{8} = \frac{-1 + 6 + 3}{8} = \frac{8}{8} = 1 Im=0\text{Im} = 0 H=1.000,A=20log10(1)=0 dB|H| = 1.000, \quad A = 20\log_{10}(1) = 0 \text{ dB}

直流增益为 1,信号完全通过。

f=3f = 3 MHz(超声低端):

ω=2π×340=0.4712 rad\omega = \frac{2\pi \times 3}{40} = 0.4712 \text{ rad} cosω=0.8910,sinω=0.4540,cos2ω=0.5878,sin2ω=0.8090\cos\omega = 0.8910, \quad \sin\omega = 0.4540, \quad \cos 2\omega = 0.5878, \quad \sin 2\omega = 0.8090 Re=0.125+0.75×0.8910+0.375×0.5878=0.125+0.6683+0.2204=0.7637\text{Re} = -0.125 + 0.75 \times 0.8910 + 0.375 \times 0.5878 = -0.125 + 0.6683 + 0.2204 = 0.7637 Im=0.75×0.45400.375×0.8090=0.34050.3034=0.6439\text{Im} = -0.75 \times 0.4540 - 0.375 \times 0.8090 = -0.3405 - 0.3034 = -0.6439 H=0.76372+0.64392=0.5832+0.4146=0.9978=0.9989|H| = \sqrt{0.7637^2 + 0.6439^2} = \sqrt{0.5832 + 0.4146} = \sqrt{0.9978} = 0.9989 A=20log10(0.9989)=0.01 dBA = 20\log_{10}(0.9989) = -0.01 \text{ dB}

3 MHz 处几乎零衰减,信号保留 99.9%。

f=5f = 5 MHz(超声中心频率):

ω=2π×540=π4=0.7854 rad\omega = \frac{2\pi \times 5}{40} = \frac{\pi}{4} = 0.7854 \text{ rad} cosω=0.7071,sinω=0.7071,cos2ω=0,sin2ω=1\cos\omega = 0.7071, \quad \sin\omega = 0.7071, \quad \cos 2\omega = 0, \quad \sin 2\omega = 1 Re=0.125+0.75×0.7071+0.375×0=0.125+0.5303=0.4053\text{Re} = -0.125 + 0.75 \times 0.7071 + 0.375 \times 0 = -0.125 + 0.5303 = 0.4053 Im=0.75×0.70710.375×1=0.53030.375=0.9053\text{Im} = -0.75 \times 0.7071 - 0.375 \times 1 = -0.5303 - 0.375 = -0.9053 H=0.40532+0.90532=0.1643+0.8196=0.9839=0.9919|H| = \sqrt{0.4053^2 + 0.9053^2} = \sqrt{0.1643 + 0.8196} = \sqrt{0.9839} = 0.9919 A=20log10(0.9919)=0.07 dBA = 20\log_{10}(0.9919) = -0.07 \text{ dB}

5 MHz 处衰减 0.07 dB,信号保留 99.2%。

f=10f = 10 MHz(超声高端):

ω=2π×1040=π2=1.5708 rad\omega = \frac{2\pi \times 10}{40} = \frac{\pi}{2} = 1.5708 \text{ rad} cosω=0,sinω=1,cos2ω=1,sin2ω=0\cos\omega = 0, \quad \sin\omega = 1, \quad \cos 2\omega = -1, \quad \sin 2\omega = 0 Re=0.125+0.75×0+0.375×(1)=0.1250.375=0.5\text{Re} = -0.125 + 0.75 \times 0 + 0.375 \times (-1) = -0.125 - 0.375 = -0.5 Im=0.75×10.375×0=0.75\text{Im} = -0.75 \times 1 - 0.375 \times 0 = -0.75 H=0.52+0.752=0.25+0.5625=0.8125=0.9014|H| = \sqrt{0.5^2 + 0.75^2} = \sqrt{0.25 + 0.5625} = \sqrt{0.8125} = 0.9014 A=20log10(0.9014)=0.90 dBA = 20\log_{10}(0.9014) = -0.90 \text{ dB}

10 MHz 处衰减 0.9 dB,信号保留 90.1%。

f=15f = 15 MHz(信号上边界附近):

ω=2π×1540=3π4=2.3562 rad\omega = \frac{2\pi \times 15}{40} = \frac{3\pi}{4} = 2.3562 \text{ rad} cosω=0.7071,sinω=0.7071,cos2ω=0,sin2ω=1\cos\omega = -0.7071, \quad \sin\omega = 0.7071, \quad \cos 2\omega = 0, \quad \sin 2\omega = -1 Re=0.125+0.75×(0.7071)+0.375×0=0.1250.5303=0.6553\text{Re} = -0.125 + 0.75 \times (-0.7071) + 0.375 \times 0 = -0.125 - 0.5303 = -0.6553 Im=0.75×0.70710.375×(1)=0.5303+0.375=0.1553\text{Im} = -0.75 \times 0.7071 - 0.375 \times (-1) = -0.5303 + 0.375 = -0.1553 H=0.65532+0.15532=0.4294+0.0241=0.4535=0.6734|H| = \sqrt{0.6553^2 + 0.1553^2} = \sqrt{0.4294 + 0.0241} = \sqrt{0.4535} = 0.6734 A=20log10(0.6734)=3.43 dBA = 20\log_{10}(0.6734) = -3.43 \text{ dB}

15 MHz 处衰减 3.43 dB,信号保留 67.3%。

f=20f = 20 MHz(奈奎斯特频率):

ω=2π×2040=π\omega = \frac{2\pi \times 20}{40} = \pi cosω=1,sinω=0,cos2ω=1,sin2ω=0\cos\omega = -1, \quad \sin\omega = 0, \quad \cos 2\omega = 1, \quad \sin 2\omega = 0 Re=0.125+0.75×(1)+0.375×1=0.1250.75+0.375=0.5\text{Re} = -0.125 + 0.75 \times (-1) + 0.375 \times 1 = -0.125 - 0.75 + 0.375 = -0.5 Im=0\text{Im} = 0 H=0.5|H| = 0.5 A=20log10(0.5)=6.02 dBA = 20\log_{10}(0.5) = -6.02 \text{ dB}

奈奎斯特处衰减 6 dB,信号只剩一半。

汇总
频率 ω\omega (rad) Re(H) Im(H) H\|H\| dB 信号保留
0 MHz 0 1.000 0 1.000 0 100%
3 MHz 0.471 0.764 -0.644 0.999 -0.01 99.9%
5 MHz 0.785 0.405 -0.905 0.992 -0.07 99.2%
7 MHz 1.100 0.020 -0.941 0.941 -0.53 94.1%
10 MHz 1.571 -0.500 -0.750 0.901 -0.90 90.1%
15 MHz 2.356 -0.655 -0.155 0.673 -3.43 67.3%
20 MHz 3.142 -0.500 0 0.500 -6.02 50.0%
对超声信号的实际影响

超声探头的典型工作频段是 3~10 MHz:

  • 3 MHz:损失 0.01 dB,几乎零影响
  • 5 MHz(中心频率):损失 0.07 dB,完全可忽略
  • 10 MHz(带宽上边界):损失 0.9 dB,开始有轻微影响但仍可接受

对于超声成像来说,1~2 dB 的幅度损失可以通过后续的增益补偿修正。而且 128 个通道都用同样的插值系数,衰减量完全一致,不会引入通道间的不一致性。波束合成关心的是通道间的相对幅度和相位,不是绝对幅度。

1520 MHz 的衰减较大(36 dB),但这些频率对于 3~10 MHz 工作频段的探头来说已经不在有效带宽内了。

那为什么不用更高阶的插值器

理论上用更多 tap(比如 sinc 插值 8 点、16 点)可以让通带内衰减更小、镜像抑制更好。但代价是:128 通道并行,每多一个 tap 就多 128 个乘法器。3-tap 只需要 128 x 3 = 384 个乘加操作(而且用移位代替了乘法,实际不消耗 DSP),而 8-tap 需要 1024 个真正的乘法器。

设计者选择 3-tap Lagrange 插值,是在”插值精度(通带内 < 1 dB 损失)”、”高频保真度”和”资源消耗”之间做的权衡。对于这个超声成像系统来说,3-tap 已经是甜蜜点。

判断标准:什么时候叫插值,什么时候叫滤波

判断标准不是看公式长什么样,而是看设计意图

叫插值: 你关心的是”时间轴上某个位置的值是多少”。系数从插值公式(Lagrange、sinc 等)推导,优化目标是时域精度。频率响应是什么样你不太关心,只要插值精度够高就行。interp.v 就是这种情况。

叫滤波: 你关心的是”某个频段保留多少、另一个频段衰减多少”。系数从频率指标(截止频率、阻带衰减)设计,优化目标是频率选择性。时域波形会变成什么样你不太关心。IIR.v 的高通滤波就是这种情况。

两者兼有: 数字上采样(插零 + 低通滤波),这里的低通既是去镜像的滤波器,又是填充零值间隙的插值器。

一句话总结:插值是滤波的一种特例。所有插值器都可以看作一个特定系数的 FIR 滤波器,但不是所有滤波器都在做插值。区别在于你设计系数时脑子里想的是”时间偏移”还是”频率选择”。

2.2 IIR 滤波器

2.2.1 原理

什么是 IIR

IIR(Infinite Impulse Response,无限冲激响应)滤波器的输出不仅取决于当前和过去的输入,还取决于过去的输出值,形成反馈。它的一般差分方程为:

y[n]=k=0Mbkx[nk]k=1Naky[nk]y[n] = \sum_{k=0}^{M} b_k \cdot x[n-k] - \sum_{k=1}^{N} a_k \cdot y[n-k]

展开写:

y[n]=b0x[n]+b1x[n!!1]++bMx[n!!M]a1y[n!!1]a2y[n!!2]aNy[n!!N]y[n] = b_0 \cdot x[n] + b_1 \cdot x[n!-!1] + \cdots + b_M \cdot x[n!-!M] - a_1 \cdot y[n!-!1] - a_2 \cdot y[n!-!2] - \cdots - a_N \cdot y[n!-!N]

和 FIR 的关键区别:等号右边出现了 y[n1],y[n2],y[n-1], y[n-2], \ldots(过去的输出),这构成了反馈回路。输出会影响未来的输出,系统有”记忆”,冲激响应理论上无限长(不会像 FIR 那样在 NN 个采样后自然归零)。

其中:

  • bkb_k 是前馈系数(feedforward),作用于输入 xx,共 M+1M+1
  • aka_k 是反馈系数(feedback),作用于历史输出 yy,共 NN 个(a0=1a_0 = 1 已归一化)
  • MM 是前馈阶数,NN 是反馈阶数,系统阶数取两者的较大值
Z 域传递函数

对差分方程做 Z 变换(利用时移性质 y[nk]zkY(z)y[n-k] \leftrightarrow z^{-k}Y(z)):

Y(z)=k=0MbkzkX(z)k=1NakzkY(z)Y(z) = \sum_{k=0}^{M} b_k z^{-k} X(z) - \sum_{k=1}^{N} a_k z^{-k} Y(z)

移项整理:

Y(z)(1+k=1Nakzk)=X(z)k=0MbkzkY(z)\left(1 + \sum_{k=1}^{N} a_k z^{-k}\right) = X(z)\sum_{k=0}^{M} b_k z^{-k}

得到传递函数:

H(z)=Y(z)X(z)=k=0Mbkzk1+k=1Nakzk=b0+b1z1++bMzM1+a1z1++aNzNH(z) = \frac{Y(z)}{X(z)} = \frac{\sum_{k=0}^{M} b_k z^{-k}}{1 + \sum_{k=1}^{N} a_k z^{-k}} = \frac{b_0 + b_1 z^{-1} + \cdots + b_M z^{-M}}{1 + a_1 z^{-1} + \cdots + a_N z^{-N}}

和 FIR 对比:FIR 的传递函数分母为 1(没有反馈),只有零点没有极点。IIR 的分母是 NN 阶多项式,既有零点又有极点。极点是 IIR 性能的核心——它们决定了频率响应的形状和系统的稳定性。

频率响应

z=ejωz = e^{j\omega}

H(ejω)=k=0Mbkejkω1+k=1NakejkωH(e^{j\omega}) = \frac{\sum_{k=0}^{M} b_k \cdot e^{-jk\omega}}{1 + \sum_{k=1}^{N} a_k \cdot e^{-jk\omega}}

幅度响应:

H(ejω)=k=0Mbkejkω1+k=1Nakejkω|H(e^{j\omega})| = \frac{\left|\sum_{k=0}^{M} b_k \cdot e^{-jk\omega}\right|}{\left|1 + \sum_{k=1}^{N} a_k \cdot e^{-jk\omega}\right|}

极点附近频率的分母接近零,幅度响应出现峰值(共振);零点附近频率的分子接近零,幅度响应出现凹谷(抑制)。设计 IIR 滤波器的本质就是把极点和零点放在合适的位置,雕刻出你想要的频率响应曲线。

稳定性

IIR 有反馈就有可能不稳定。稳定性判据是:

所有极点必须在单位圆内:zp<1\text{所有极点必须在单位圆内:} |z_p| < 1

极点就是传递函数分母多项式的根。如果某个极点 zpz_p 的模 zp1|z_p| \geq 1,系统的冲激响应会按 zpn|z_p|^n 指数增长,输出发散。

直觉理解:反馈系数决定了”每一拍有多少比例的输出被重新注入系统”。如果反馈太强(系数太大),每一拍注入的能量比衰减的多,系统就像话筒对着音箱——越来越响直到爆掉。极点在单位圆内等价于反馈衰减率大于注入率,系统能自我收敛。

FIR 不存在这个问题,因为没有反馈,所有极点都在原点(z=0z = 0),绝对稳定。

IIR 与 FIR 的对比
FIR IIR
反馈
冲激响应 有限长(N+1N+1 个点后归零) 无限长(理论上永不归零)
极点 全在原点,绝对稳定 zz 平面任意位置,可能不稳定
线性相位 系数对称时严格线性 一般做不到线性相位
同等滤波效果的阶数 高(可能需要几十上百阶) 低(通常 2~6 阶就够)
资源消耗 N+1N+1 个乘法器 通常远少于 FIR
设计方法 窗函数法 / 频率采样 / 最优化 模拟原型 + 双线性变换

一句话总结:FIR 用”数量”换”安全”(阶数多但绝对稳定),IIR 用”技巧”换”效率”(阶数少但需要仔细控制稳定性)。

为什么 IIR 的阶数低得多

根本原因是极点的存在。FIR 只有零点,要实现陡峭的截止必须堆很多零点来逐步压低阻带增益。IIR 有极点可用:在通带边缘放一个极点会让该频率附近的增益急剧上升,配合零点在阻带的抑制,只需要很少的极零对就能构造出非常陡峭的过渡带。

一个二阶 IIR 的滚降是 -40 dB/dec,要达到同样的滚降,FIR 可能需要 30~50 阶。


2.2.2 一阶 IIR

一阶 IIR 是最简单的有反馈系统(N=1N=1),只有一个极点。

一阶 IIR 低通
y[n]=(1a)x[n]+ay[n1]y[n] = (1-a) \cdot x[n] + a \cdot y[n-1]

传递函数:

H(z)=1a1az1H(z) = \frac{1-a}{1 - a z^{-1}}

极点在 z=az = a,没有零点。

直流增益ω=0,;z=1\omega = 0, ; z = 1):H(1)=1a1a=1H(1) = \frac{1-a}{1-a} = 1,直流全通。

奈奎斯特增益ω=π,;z=1\omega = \pi, ; z = -1):H(1)=1a1+aH(-1) = \frac{1-a}{1+a},随 aa 增大而减小。

aa 越接近 1,极点越靠近单位圆,低频增益维持得越久才开始下降,截止频率越低。aa 越接近 0,极点靠近原点,衰减从很低频就开始了,截止频率越高。

截止频率(-3 dB)的精确公式推导:

H(ejω)2=(1a)21+a22acosω=12H(0)2=12|H(e^{j\omega})|^2 = \frac{(1-a)^2}{1 + a^2 - 2a\cos\omega} = \frac{1}{2} \cdot |H(0)|^2 = \frac{1}{2}

解出:

cosωc=2a(1a)20...\cos\omega_c = \frac{2a - (1-a)^2 \cdot 0}{...}

比较复杂,近似公式(aa 接近 1 时精度很好):

fcfs(1a)2πaf_c \approx \frac{f_s \cdot (1-a)}{2\pi \cdot a}

a=0.5,;fs=40a = 0.5, ; f_s = 40 MHz 为例:fc40×0.52π×0.56.37f_c \approx \frac{40 \times 0.5}{2\pi \times 0.5} \approx 6.37 MHz。

一阶 IIR 高通
y[n]=a(y[n1]+x[n]x[n1])y[n] = a \cdot (y[n-1] + x[n] - x[n-1])

展开:y[n]=ay[n1]+ax[n]ax[n1]y[n] = a \cdot y[n-1] + a \cdot x[n] - a \cdot x[n-1]

传递函数:

H(z)=a(1z1)1az1H(z) = \frac{a(1 - z^{-1})}{1 - a z^{-1}}

和低通对比,分母(极点)完全一样,区别全在分子:多了 (1z1)(1 - z^{-1}),在 z=1z = 1(直流)引入零点。

直流增益H(1)=a(11)1a=0H(1) = \frac{a(1-1)}{1-a} = 0,直流完全抑制。

奈奎斯特增益H(1)=a(1+1)1+a=2a1+aH(-1) = \frac{a(1+1)}{1+a} = \frac{2a}{1+a},接近 1(a1a \to 1 时趋近 1)。

截止频率近似公式和低通相同:

fcfs(1a)2πaf_c \approx \frac{f_s \cdot (1-a)}{2\pi \cdot a}

a=0.73,;fs=40a = 0.73, ; f_s = 40 MHz 为例:fc40×0.272π×0.732.35f_c \approx \frac{40 \times 0.27}{2\pi \times 0.73} \approx 2.35 MHz。

一阶 IIR 的局限性

和一阶 FIR 类似,一阶 IIR 的滚降只有 -20 dB/dec(-6 dB/oct),过渡带很宽。如果需要更陡的截止,必须提升阶数。

但一阶 IIR 比一阶 FIR 有一个决定性优势:可调性。FIR 的频率响应由系数固定,改截止频率就要重新设计整组系数。一阶 IIR 只需要改一个参数 aa,截止频率连续可调,而且直流增益始终为 1(低通)或 0(高通),不需要额外归一化。


2.2.3 多阶 IIR

阶数与性能的关系

增加阶数 NN 的效果:

  • 过渡带变窄:滚降从 -20 dB/dec(一阶)变成 -40 dB/dec(二阶)、-60 dB/dec(三阶)……
  • 频率响应形状更灵活:更多极零对可以精细雕刻通带、阻带、过渡带
  • 稳定性风险增大:极点越多,越容易有某个极点跑到单位圆外
  • 相位非线性加重:极点越多,群延迟波动越大
经典模拟原型

高阶 IIR 通常不直接在 zz 域设计,而是先在连续域(ss 域)设计一个模拟滤波器原型,再通过双线性变换映射到 zz 域。四种经典原型:

Butterworth(巴特沃斯): 通带最大平坦(没有波纹),但过渡带最宽。NN 阶 Butterworth 的极点均匀分布在 ss 平面左半圆上。如果对通带内的平坦度要求很高(比如测量仪器),选它。

Chebyshev I(切比雪夫 I 型): 允许通带内有等波纹,换来更窄的过渡带。波纹幅度由参数指定(比如 1 dB)。同样阶数下过渡带比 Butterworth 窄约 30%~50%,代价是通带不平坦。

Chebyshev II(切比雪夫 II 型): 通带平坦,但阻带有等波纹。适合”通带一定要平、阻带可以有纹”的场景。

Elliptic(椭圆 / Cauer): 通带和阻带都允许等波纹。同样阶数下过渡带最窄,代价是相位非线性最严重。如果阶数受限但对过渡带要求苛刻,选它。

类型 通带 阻带 过渡带 相位
Butterworth 最大平坦 单调下降 最宽 较好
Chebyshev I 等波纹 单调下降 较窄 较差
Chebyshev II 最大平坦 等波纹 较窄 较差
Elliptic 等波纹 等波纹 最窄 最差

从 Butterworth 到 Elliptic,过渡带依次变窄,但相位非线性和通带/阻带波纹依次加重。没有”最好的”,只有”最适合你需求的”。

双线性变换

模拟原型 Ha(s)H_a(s) 映射到数字域 H(z)H(z) 的标准方法。映射公式:

s=2T1z11+z1s = \frac{2}{T} \cdot \frac{1 - z^{-1}}{1 + z^{-1}}

几何意义:

  • ss 平面的虚轴(jΩj\Omega)映射到 zz 平面的单位圆
  • ss 的左半平面映射到 zz 的单位圆内部
  • 稳定的模拟滤波器映射后仍然稳定

代价是频率轴被非线性压缩。模拟频率 Ω\Omega 和数字频率 ω\omega 的关系:

Ω=2Ttanω2\Omega = \frac{2}{T}\tan\frac{\omega}{2} ω\omega 从 0 到 π\pi 时,Ω\Omega 从 0 到 \infty。低频段近似线性,高频段严重压缩。所以需要**频率预畸变**:设计模拟原型时故意把截止频率设偏,让双线性变换压缩后恰好落在目标位置。
完整设计流程
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
频率指标 (截止频率, 通带波纹, 阻带衰减, 采样率)
|
v
选择原型: Butterworth / Chebyshev I / Chebyshev II / Elliptic
|
v
Step 1: 在 s 域设计模拟原型 Ha(s)
|
v
Step 2: 频率预畸变 (补偿双线性变换的频率压缩)
|
v
Step 3: 双线性变换 s -> z, 得到 H(z)
|
v
输出分子系数 b[0:M] 和分母系数 a[0:N]
|
v
H(z) = (b[0] + b[1]*z^-1 + ... + b[M]*z^-M) / (1 + a[1]*z^-1 + ... + a[N]*z^-N)
二阶 IIR 数值例子

以二阶 Butterworth 低通为例,fc=5f_c = 5 MHz,fs=40f_s = 40 MHz:

Step 1:频率预畸变

ωc=2πfcfs=2π×540=π4\omega_c = \frac{2\pi f_c}{f_s} = \frac{2\pi \times 5}{40} = \frac{\pi}{4} Ωc=2Ttanωc2=2fstanπ/42=80×106×tan(0.3927)=80×106×0.4142=33.14×106\Omega_c = \frac{2}{T}\tan\frac{\omega_c}{2} = 2 f_s \tan\frac{\pi/4}{2} = 80 \times 10^6 \times \tan(0.3927) = 80 \times 10^6 \times 0.4142 = 33.14 \times 10^6

Step 2:二阶 Butterworth 模拟原型

归一化原型:Ha(s)=1s2+2s+1H_a(s) = \frac{1}{s^2 + \sqrt{2}s + 1}

去归一化(ss/Ωcs \to s/\Omega_c):Ha(s)=Ωc2s2+2Ωcs+Ωc2H_a(s) = \frac{\Omega_c^2}{s^2 + \sqrt{2}\Omega_c s + \Omega_c^2}

Step 3:双线性变换

代入 s=2T1z11+z1s = \frac{2}{T} \cdot \frac{1-z^{-1}}{1+z^{-1}},经过代数化简(过程较繁琐,此处给出结果),得到:

H(z)=0.0675(1+2z1+z2)11.1430z1+0.4128z2H(z) = \frac{0.0675(1 + 2z^{-1} + z^{-2})}{1 - 1.1430z^{-1} + 0.4128z^{-2}}

验证:

  • 直流增益(z=1z=1):H(1)=0.0675×411.1430+0.4128=0.27000.26981.0H(1) = \frac{0.0675 \times 4}{1 - 1.1430 + 0.4128} = \frac{0.2700}{0.2698} \approx 1.0(正确,低通直流增益为 1)
  • 极点:解 11.1430z1+0.4128z2=01 - 1.1430z^{-1} + 0.4128z^{-2} = 0,得 z=0.5715±j0.3958z = 0.5715 \pm j0.3958z=0.695<1|z| = 0.695 < 1(稳定)
  • 零点:z=1z = -1(双重零点),对应奈奎斯特频率的完全抑制

对应的差分方程:

y[n]=0.0675x[n]+0.1350x[n!!1]+0.0675x[n!!2]+1.1430y[n!!1]0.4128y[n!!2]y[n] = 0.0675 \cdot x[n] + 0.1350 \cdot x[n!-!1] + 0.0675 \cdot x[n!-!2] + 1.1430 \cdot y[n!-!1] - 0.4128 \cdot y[n!-!2]

只需要 5 次乘法 + 4 次加法就实现了一个 -40 dB/dec 滚降的低通滤波器。如果用 FIR 达到同样的滚降和过渡带宽度,可能需要 30+ 个 tap(30+ 次乘法)。


2.2.4 IIR 交互仿真

下方交互组件支持调节滤波器类型(低通/高通)、阶数(一阶/二阶)、系数 aa 和采样率,实时观察幅度响应、相位响应、冲激响应和系数值。

特别注意:把系数 aa 拖到大于 1.0 时,极点会跑到单位圆外,系统变得不稳定。切到”冲激响应”标签页可以直观看到输出如何指数发散。

交互实验建议
  1. 观察 aa 对截止频率的影响:固定一阶高通 + fs=40MHz,把 aa 从 0.1 拖到 0.99,观察截止频率从十几 MHz 降到接近 0 的过程。aa 越接近 1,高通只滤掉极低频的直流分量
  2. 对比一阶和二阶:固定高通 + a=0.73 + fs=40MHz,切换一阶和二阶。二阶的过渡带明显更陡(-40 dB/dec vs -20 dB/dec),但通带接近奈奎斯特时的行为也不同
  3. 观察不稳定:把 aa 拖到 1.05 或更大,切到”冲激响应”标签页。稳定时冲激响应逐渐衰减趋近零,不稳定时指数增长(红色柱子越来越高)。这就是极点在单位圆外的物理含义
  4. 对比高通和低通的冲激响应:同样 a=0.73a=0.73,低通的冲激响应全是正值(指数衰减),高通的冲激响应正负交替(因为分子有 (1z1)(1-z^{-1}) 差分因子)
  5. 临界稳定(a=1.00a = 1.00:冲激响应既不增长也不衰减,保持常数或等幅振荡。这是稳定和不稳定的精确分界点,对应极点恰好在单位圆上