滤波器(数字&模拟) 一、模拟滤波器 二、数字滤波器 数字滤波器是数字信号处理的核心工具,作用是对离散时间信号进行频率选择——保留想要的频率成分,抑制不想要的部分。根据系统的冲激响应是否有限,分为两大类:FIR(有限冲激响应)和 IIR(无限冲激响应)。
2.1 FIR 滤波器 2.1.1 原理 什么是 FIR FIR(Finite Impulse Response,有限冲激响应)滤波器的输出只取决于当前和过去有限个输入值的加权和 ,不存在输出到输入的反馈。它的差分方程为:
y [ n ] = ∑ k = 0 N h [ k ] ⋅ x [ n − k ] y[n] = \sum_{k=0}^{N} h[k] \cdot x[n-k] y [ n ] = k = 0 ∑ N h [ k ] ⋅ 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] y [ n ] = h [ 0 ] ⋅ x [ n ] + h [ 1 ] ⋅ x [ n − 1 ] + h [ 2 ] ⋅ x [ n − 2 ] + ⋯ + h [ N ] ⋅ x [ n − N ]
其中:
x [ n ] x[n] x [ n ] 是当前输入采样值,x [ n − k ] x[n-k] x [ n − k ] 是 k k k 个采样周期之前的输入
h [ k ] h[k] h [ k ] 是滤波器系数(也叫 tap 系数或冲激响应)
N N N 是滤波器的阶数,N + 1 N+1 N + 1 是 tap 数(系数个数)
y [ n ] y[n] y [ n ] 是当前输出
整个计算就是一个”滑动窗口内的加权求和”:窗口宽度为 N + 1 N+1 N + 1 ,每个位置的权重由 h [ k ] h[k] h [ k ] 决定。
Z 域传递函数 对差分方程做 Z 变换,得到传递函数:
H ( z ) = ∑ k = 0 N h [ k ] ⋅ z − k = h [ 0 ] + h [ 1 ] ⋅ z − 1 + h [ 2 ] ⋅ z − 2 + ⋯ + h [ N ] ⋅ z − N H(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} H ( z ) = k = 0 ∑ N h [ k ] ⋅ z − k = h [ 0 ] + h [ 1 ] ⋅ z − 1 + h [ 2 ] ⋅ z − 2 + ⋯ + h [ N ] ⋅ z − N
分子是 N N N 阶多项式,分母为 1(没有反馈极点),这就是 FIR “有限”的原因:系统只有零点没有极点(极点全在原点),冲激响应在 N N N 个采样后自然归零,不会像 IIR 那样无限延续。
频率响应 令 z = e j ω z = e^{j\omega} z = e jω (单位圆上的点),得到频率响应:
H ( e j ω ) = ∑ k = 0 N h [ k ] ⋅ e − j k ω H(e^{j\omega}) = \sum_{k=0}^{N} h[k] \cdot e^{-jk\omega} H ( e jω ) = k = 0 ∑ N h [ k ] ⋅ e − jkω
其中 ω = 2 π f f s \omega = \frac{2\pi f}{f_s} ω = f s 2 π f 是归一化角频率,f f f 是实际频率,f s f_s f s 是采样率。
幅度响应为:
∣ H ( e j ω ) ∣ = ∣ ∑ k = 0 N h [ k ] ⋅ e − j k ω ∣ |H(e^{j\omega})| = \left| \sum_{k=0}^{N} h[k] \cdot e^{-jk\omega} \right| ∣ H ( e jω ) ∣ = k = 0 ∑ N h [ k ] ⋅ e − jkω
转成 dB 表示:
A ( f ) = 20 ⋅ log 10 ∣ H ( e j ω ) ∣ dB A(f) = 20 \cdot \log_{10} |H(e^{j\omega})| \quad \text{dB} A ( f ) = 20 ⋅ log 10 ∣ H ( e jω ) ∣ dB
线性相位特性 FIR 滤波器最重要的优势是可以实现严格的线性相位 。当系数满足对称条件 h [ k ] = h [ N − k ] h[k] = h[N-k] h [ k ] = h [ N − k ] 时,相位响应为:
∠ H ( e j ω ) = − N 2 ⋅ ω \angle H(e^{j\omega}) = -\frac{N}{2} \cdot \omega ∠ H ( e jω ) = − 2 N ⋅ ω
相位是频率的线性函数,这意味着所有频率成分经过滤波器后的延迟量相同,都是 N / 2 N/2 N /2 个采样周期。信号的波形形状不会因为相位失真而畸变,只是整体延迟了一段时间。
这个性质对超声成像、通信系统等对波形保真度要求高的应用至关重要。IIR 滤波器做不到严格的线性相位。
窗函数设计法 设计 FIR 滤波器最直观的方法是窗函数法 。以低通滤波器为例:
第一步,写出理想低通滤波器的冲激响应(无限长):
h d [ n ] = ω c π ⋅ sinc ( ω c π ( n − N 2 ) ) = sin ( ω c ( n − N / 2 ) ) π ( n − N / 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)} h d [ n ] = π ω c ⋅ sinc ( π ω c ( n − 2 N ) ) = π ( n − N /2 ) sin ( ω c ( n − N /2 ))
其中 ω c = 2 π f c f s \omega_c = \frac{2\pi f_c}{f_s} ω c = f s 2 π f c 是截止频率对应的归一化角频率。
第二步,用窗函数 w [ n ] w[n] w [ n ] 截断为有限长度:
h [ n ] = h d [ n ] ⋅ w [ n ] , n = 0 , 1 , … , N h[n] = h_d[n] \cdot w[n], \quad n = 0, 1, \ldots, N h [ n ] = h d [ n ] ⋅ w [ n ] , n = 0 , 1 , … , N
不同的窗函数在”主瓣宽度”和”旁瓣衰减”之间做取舍:
窗函数
阻带衰减
主瓣宽度
特点
矩形窗
-13 dB
4 π / ( N + 1 ) 4\pi/(N+1) 4 π / ( N + 1 )
频率分辨率最高,但旁瓣最大
汉宁窗
-31 dB
8 π / ( N + 1 ) 8\pi/(N+1) 8 π / ( N + 1 )
旁瓣下降快(-18 dB/oct)
汉明窗
-43 dB
8 π / ( N + 1 ) 8\pi/(N+1) 8 π / ( N + 1 )
工程中最常用,平衡性好
布莱克曼窗
-58 dB
12 π / ( N + 1 ) 12\pi/(N+1) 12 π / ( N + 1 )
阻带衰减最大,但过渡带最宽
阻带衰减越大意味着被滤掉的频率被抑制得越彻底,但代价是过渡带(从通带到阻带的过渡区域)越宽。对于固定的窗函数,增大阶数 N N N 可以收窄过渡带但不能改善阻带衰减 ,阻带衰减由窗函数类型决定。
窗函数的数学表达式:
矩形窗:w [ n ] = 1 w[n] = 1 w [ n ] = 1
汉明窗:w [ n ] = 0.54 − 0.46 cos ( 2 π n N ) w[n] = 0.54 - 0.46\cos\left(\frac{2\pi n}{N}\right) w [ n ] = 0.54 − 0.46 cos ( N 2 πn )
汉宁窗:w [ n ] = 0.5 − 0.5 cos ( 2 π n N ) w[n] = 0.5 - 0.5\cos\left(\frac{2\pi n}{N}\right) w [ n ] = 0.5 − 0.5 cos ( N 2 πn )
布莱克曼窗:w [ n ] = 0.42 − 0.5 cos ( 2 π n N ) + 0.08 cos ( 4 π n N ) w[n] = 0.42 - 0.5\cos\left(\frac{2\pi n}{N}\right) + 0.08\cos\left(\frac{4\pi n}{N}\right) w [ n ] = 0.42 − 0.5 cos ( N 2 πn ) + 0.08 cos ( N 4 πn )
2.1.2 一阶 FIR 一阶 FIR 是最简单的情况(N = 1 N=1 N = 1 ,2 个 tap):
y [ n ] = h [ 0 ] ⋅ x [ n ] + h [ 1 ] ⋅ x [ n − 1 ] y[n] = h[0] \cdot x[n] + h[1] \cdot x[n-1] y [ n ] = h [ 0 ] ⋅ x [ n ] + h [ 1 ] ⋅ x [ n − 1 ]
一阶 FIR 差分器(高通) 令 h [ 0 ] = 1 , h [ 1 ] = − 1 h[0] = 1, \; h[1] = -1 h [ 0 ] = 1 , h [ 1 ] = − 1 :
y [ n ] = x [ n ] − x [ n − 1 ] y[n] = x[n] - x[n-1] y [ n ] = x [ n ] − x [ n − 1 ]
这就是一阶差分,频率响应为:
H ( e j ω ) = 1 − e − j ω = e − j ω / 2 ⋅ 2 j sin ( ω / 2 ) H(e^{j\omega}) = 1 - e^{-j\omega} = e^{-j\omega/2} \cdot 2j \sin(\omega/2) H ( e jω ) = 1 − e − jω = e − jω /2 ⋅ 2 j sin ( ω /2 )
幅度响应 ∣ H ∣ = 2 ∣ sin ( ω / 2 ) ∣ |H| = 2|\sin(\omega/2)| ∣ H ∣ = 2∣ sin ( ω /2 ) ∣ :ω = 0 \omega=0 ω = 0 (直流)时为 0,ω = π \omega=\pi ω = π (奈奎斯特频率)时为 2。这是一个高通特性——频率越高幅度越大。
一阶 FIR 平均器(低通) 令 h [ 0 ] = 0.5 , h [ 1 ] = 0.5 h[0] = 0.5, \; h[1] = 0.5 h [ 0 ] = 0.5 , h [ 1 ] = 0.5 :
y [ n ] = 0.5 ⋅ x [ n ] + 0.5 ⋅ x [ n − 1 ] y[n] = 0.5 \cdot x[n] + 0.5 \cdot x[n-1] y [ n ] = 0.5 ⋅ x [ n ] + 0.5 ⋅ x [ n − 1 ]
相邻两个采样取平均,频率响应为:
∣ H ∣ = ∣ cos ( ω / 2 ) ∣ |H| = |\cos(\omega/2)| ∣ H ∣ = ∣ cos ( ω /2 ) ∣
ω = 0 \omega=0 ω = 0 时为 1(直流全通),ω = π \omega=\pi ω = π 时为 0(最高频完全抑制)。这是最简单的低通滤波器,但过渡带非常宽,衰减只有 − 6 -6 − 6 dB/oct,实际工程中几乎不会单独使用。
一阶 FIR 的局限性 一阶 FIR 只有 2 个系数,无法实现陡峭的截止特性。它的滚降斜率只有 -6 dB/oct(-20 dB/dec),无论怎么调系数都不可能超过这个限制。要想得到更好的滤波效果,必须增加阶数。
2.1.3 多阶 FIR 阶数与性能的关系 增加阶数 N N N 的效果:
过渡带变窄 :从通带到阻带的过渡更陡峭
群延迟增大 :固定为 N / 2 N/2 N /2 个采样周期,阶数越高延迟越大
资源消耗增大 :N + 1 N+1 N + 1 个乘法器 + N N N 个加法器 + N N N 个延迟寄存器
阻带衰减不变 :由窗函数类型决定,和阶数无关
工程中需要在”过渡带宽度”和”延迟/资源”之间折中。粗略估算公式(汉明窗):
N ≈ 8 π Δ ω = 4 f s Δ f N \approx \frac{8\pi}{\Delta\omega} = \frac{4 f_s}{\Delta f} N ≈ Δ ω 8 π = Δ f 4 f s
其中 Δ f \Delta f Δ f 是期望的过渡带宽度(Hz)。例如 f s = 40 f_s = 40 f s = 40 MHz,期望过渡带 2 MHz,则 N ≈ 4 × 40 / 2 = 80 N \approx 4 \times 40 / 2 = 80 N ≈ 4 × 40/2 = 80 阶。
2.1.4 FIR 交互仿真 下方交互组件支持调节滤波器类型(低通/高通/带通)、窗函数、阶数、采样频率和截止频率,实时观察幅度响应、相位响应、冲激响应和系数值:
仿真建议
观察阶数对过渡带的影响 :固定汉明窗 + 低通 + fc=5MHz + fs=40MHz,把阶数从 4 拖到 128,观察过渡带逐渐变窄的过程,同时注意阻带衰减始终维持在 -43 dB 附近不变
对比不同窗函数 :固定阶数 32 + 低通 + fc=5MHz,依次切换矩形窗/汉宁窗/汉明窗/布莱克曼窗,观察旁瓣高度和主瓣宽度的变化——阻带衰减依次改善但过渡带依次变宽
观察线性相位 :切到”相位响应”标签页,可以看到相位是频率的线性函数(一条直线),斜率 = − N / 2 = -N/2 = − N /2 ,阶数越高斜率越陡
系数对称性 :切到”冲激响应”标签页,可以直观看到 h [ k ] h[k] h [ k ] 关于中心 N / 2 N/2 N /2 对称,这就是线性相位的充要条件
带通滤波器 :切换到带通模式,可以看到两个截止频率之间的通带,以及通带两侧的衰减。带通 FIR 的阶数通常需要比同等过渡带的低通/高通更高
2.1.5 插值与滤波的边界 为什么要讨论这个问题 如果你看了前面的 FIR 原理,再看 interp.v 中的插值公式:
y = − 1 ⋅ r 0 + 6 ⋅ r 1 + 3 ⋅ r 2 8 y = \frac{-1 \cdot r_0 + 6 \cdot r_1 + 3 \cdot r_2}{8} y = 8 − 1 ⋅ r 0 + 6 ⋅ r 1 + 3 ⋅ r 2
你一定会觉得:这不就是一个 3-tap FIR 滤波器吗?系数 h = [ − 1 / 8 , 6 / 8 , 3 / 8 ] h = [-1/8, \; 6/8, \; 3/8] h = [ − 1/8 , 6/8 , 3/8 ] ,延迟线 + 乘加 + 求和,和标准 FIR 的结构一模一样。
没错,插值就是一种特殊的 FIR 滤波器 。两者的数学形式完全相同:
y [ n ] = ∑ k = 0 N h [ k ] ⋅ x [ n − k ] y[n] = \sum_{k=0}^{N} h[k] \cdot x[n-k] y [ n ] = k = 0 ∑ N h [ k ] ⋅ x [ n − k ]
硬件结构也完全相同:寄存器链 + 系数乘法 + 加法器。FPGA 综合出来的电路长得一样,不存在一种叫”插值器”的硬件和一种叫”滤波器”的硬件。
那区别到底在哪 区别不在数学结构上,而在设计系数时的目标不同 :
滤波器的系数来自频率指标。 你先说”我要截止频率 5 MHz、阻带衰减 40 dB 的低通”,然后用窗函数法或优化算法在频域上设计系数。设计目标是让幅度响应曲线长成你想要的形状。
插值器的系数来自时间偏移量。 你先说”我要估算两个采样点之间偏移 0.5 个周期处的值”,然后用 Lagrange 插值公式算系数。设计目标是让输出在时间轴上准确地落在你指定的位置。
同一组系数 [ − 1 , 6 , 3 ] / 8 [-1, 6, 3]/8 [ − 1 , 6 , 3 ] /8 ,如果你是从 Lagrange 公式在 p = 0.5 p=0.5 p = 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 / 8 h[0] = -1/8, \; h[1] = 6/8, \; h[2] = 3/8 h [ 0 ] = − 1/8 , h [ 1 ] = 6/8 , h [ 2 ] = 3/8 ,采样率 f s = 40 f_s = 40 f s = 40 MHz。
频率响应:
H ( e j ω ) = h [ 0 ] + h [ 1 ] ⋅ e − j ω + h [ 2 ] ⋅ e − 2 j ω = − 1 8 + 6 8 e − j ω + 3 8 e − 2 j ω 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} H ( e jω ) = h [ 0 ] + h [ 1 ] ⋅ e − jω + h [ 2 ] ⋅ e − 2 jω = − 8 1 + 8 6 e − jω + 8 3 e − 2 jω
幅度响应取模。先分离实部和虚部:
Re ( H ) = − 1 8 + 6 8 cos ω + 3 8 cos 2 ω \text{Re}(H) = -\frac{1}{8} + \frac{6}{8}\cos\omega + \frac{3}{8}\cos 2\omega Re ( H ) = − 8 1 + 8 6 cos ω + 8 3 cos 2 ω
Im ( H ) = − 6 8 sin ω − 3 8 sin 2 ω \text{Im}(H) = -\frac{6}{8}\sin\omega - \frac{3}{8}\sin 2\omega Im ( H ) = − 8 6 sin ω − 8 3 sin 2 ω
∣ H ( e j ω ) ∣ = Re 2 + Im 2 |H(e^{j\omega})| = \sqrt{\text{Re}^2 + \text{Im}^2} ∣ H ( e jω ) ∣ = Re 2 + Im 2
下面在几个关键频率处逐一代入计算。
直流(f = 0 f = 0 f = 0 MHz):
ω = 0 , cos 0 = 1 , sin 0 = 0 \omega = 0, \quad \cos 0 = 1, \quad \sin 0 = 0 ω = 0 , cos 0 = 1 , sin 0 = 0
Re = − 1 8 + 6 8 + 3 8 = − 1 + 6 + 3 8 = 8 8 = 1 \text{Re} = -\frac{1}{8} + \frac{6}{8} + \frac{3}{8} = \frac{-1 + 6 + 3}{8} = \frac{8}{8} = 1 Re = − 8 1 + 8 6 + 8 3 = 8 − 1 + 6 + 3 = 8 8 = 1
Im = 0 \text{Im} = 0 Im = 0
∣ H ∣ = 1.000 , A = 20 log 10 ( 1 ) = 0 dB |H| = 1.000, \quad A = 20\log_{10}(1) = 0 \text{ dB} ∣ H ∣ = 1.000 , A = 20 log 10 ( 1 ) = 0 dB
直流增益为 1,信号完全通过。
f = 3 f = 3 f = 3 MHz(超声低端):
ω = 2 π × 3 40 = 0.4712 rad \omega = \frac{2\pi \times 3}{40} = 0.4712 \text{ rad} ω = 40 2 π × 3 = 0.4712 rad
cos ω = 0.8910 , sin ω = 0.4540 , cos 2 ω = 0.5878 , sin 2 ω = 0.8090 \cos\omega = 0.8910, \quad \sin\omega = 0.4540, \quad \cos 2\omega = 0.5878, \quad \sin 2\omega = 0.8090 cos ω = 0.8910 , sin ω = 0.4540 , cos 2 ω = 0.5878 , sin 2 ω = 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 Re = − 0.125 + 0.75 × 0.8910 + 0.375 × 0.5878 = − 0.125 + 0.6683 + 0.2204 = 0.7637
Im = − 0.75 × 0.4540 − 0.375 × 0.8090 = − 0.3405 − 0.3034 = − 0.6439 \text{Im} = -0.75 \times 0.4540 - 0.375 \times 0.8090 = -0.3405 - 0.3034 = -0.6439 Im = − 0.75 × 0.4540 − 0.375 × 0.8090 = − 0.3405 − 0.3034 = − 0.6439
∣ H ∣ = 0.7637 2 + 0.6439 2 = 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 ∣ H ∣ = 0.763 7 2 + 0.643 9 2 = 0.5832 + 0.4146 = 0.9978 = 0.9989
A = 20 log 10 ( 0.9989 ) = − 0.01 dB A = 20\log_{10}(0.9989) = -0.01 \text{ dB} A = 20 log 10 ( 0.9989 ) = − 0.01 dB
3 MHz 处几乎零衰减,信号保留 99.9%。
f = 5 f = 5 f = 5 MHz(超声中心频率):
ω = 2 π × 5 40 = π 4 = 0.7854 rad \omega = \frac{2\pi \times 5}{40} = \frac{\pi}{4} = 0.7854 \text{ rad} ω = 40 2 π × 5 = 4 π = 0.7854 rad
cos ω = 0.7071 , sin ω = 0.7071 , cos 2 ω = 0 , sin 2 ω = 1 \cos\omega = 0.7071, \quad \sin\omega = 0.7071, \quad \cos 2\omega = 0, \quad \sin 2\omega = 1 cos ω = 0.7071 , sin ω = 0.7071 , cos 2 ω = 0 , sin 2 ω = 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 Re = − 0.125 + 0.75 × 0.7071 + 0.375 × 0 = − 0.125 + 0.5303 = 0.4053
Im = − 0.75 × 0.7071 − 0.375 × 1 = − 0.5303 − 0.375 = − 0.9053 \text{Im} = -0.75 \times 0.7071 - 0.375 \times 1 = -0.5303 - 0.375 = -0.9053 Im = − 0.75 × 0.7071 − 0.375 × 1 = − 0.5303 − 0.375 = − 0.9053
∣ H ∣ = 0.4053 2 + 0.9053 2 = 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 ∣ H ∣ = 0.405 3 2 + 0.905 3 2 = 0.1643 + 0.8196 = 0.9839 = 0.9919
A = 20 log 10 ( 0.9919 ) = − 0.07 dB A = 20\log_{10}(0.9919) = -0.07 \text{ dB} A = 20 log 10 ( 0.9919 ) = − 0.07 dB
5 MHz 处衰减 0.07 dB,信号保留 99.2%。
f = 10 f = 10 f = 10 MHz(超声高端):
ω = 2 π × 10 40 = π 2 = 1.5708 rad \omega = \frac{2\pi \times 10}{40} = \frac{\pi}{2} = 1.5708 \text{ rad} ω = 40 2 π × 10 = 2 π = 1.5708 rad
cos ω = 0 , sin ω = 1 , cos 2 ω = − 1 , sin 2 ω = 0 \cos\omega = 0, \quad \sin\omega = 1, \quad \cos 2\omega = -1, \quad \sin 2\omega = 0 cos ω = 0 , sin ω = 1 , cos 2 ω = − 1 , sin 2 ω = 0
Re = − 0.125 + 0.75 × 0 + 0.375 × ( − 1 ) = − 0.125 − 0.375 = − 0.5 \text{Re} = -0.125 + 0.75 \times 0 + 0.375 \times (-1) = -0.125 - 0.375 = -0.5 Re = − 0.125 + 0.75 × 0 + 0.375 × ( − 1 ) = − 0.125 − 0.375 = − 0.5
Im = − 0.75 × 1 − 0.375 × 0 = − 0.75 \text{Im} = -0.75 \times 1 - 0.375 \times 0 = -0.75 Im = − 0.75 × 1 − 0.375 × 0 = − 0.75
∣ H ∣ = 0.5 2 + 0.75 2 = 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 ∣ H ∣ = 0. 5 2 + 0.7 5 2 = 0.25 + 0.5625 = 0.8125 = 0.9014
A = 20 log 10 ( 0.9014 ) = − 0.90 dB A = 20\log_{10}(0.9014) = -0.90 \text{ dB} A = 20 log 10 ( 0.9014 ) = − 0.90 dB
10 MHz 处衰减 0.9 dB,信号保留 90.1%。
f = 15 f = 15 f = 15 MHz(信号上边界附近):
ω = 2 π × 15 40 = 3 π 4 = 2.3562 rad \omega = \frac{2\pi \times 15}{40} = \frac{3\pi}{4} = 2.3562 \text{ rad} ω = 40 2 π × 15 = 4 3 π = 2.3562 rad
cos ω = − 0.7071 , sin ω = 0.7071 , cos 2 ω = 0 , sin 2 ω = − 1 \cos\omega = -0.7071, \quad \sin\omega = 0.7071, \quad \cos 2\omega = 0, \quad \sin 2\omega = -1 cos ω = − 0.7071 , sin ω = 0.7071 , cos 2 ω = 0 , sin 2 ω = − 1
Re = − 0.125 + 0.75 × ( − 0.7071 ) + 0.375 × 0 = − 0.125 − 0.5303 = − 0.6553 \text{Re} = -0.125 + 0.75 \times (-0.7071) + 0.375 \times 0 = -0.125 - 0.5303 = -0.6553 Re = − 0.125 + 0.75 × ( − 0.7071 ) + 0.375 × 0 = − 0.125 − 0.5303 = − 0.6553
Im = − 0.75 × 0.7071 − 0.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 Im = − 0.75 × 0.7071 − 0.375 × ( − 1 ) = − 0.5303 + 0.375 = − 0.1553
∣ H ∣ = 0.6553 2 + 0.1553 2 = 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 ∣ H ∣ = 0.655 3 2 + 0.155 3 2 = 0.4294 + 0.0241 = 0.4535 = 0.6734
A = 20 log 10 ( 0.6734 ) = − 3.43 dB A = 20\log_{10}(0.6734) = -3.43 \text{ dB} A = 20 log 10 ( 0.6734 ) = − 3.43 dB
15 MHz 处衰减 3.43 dB,信号保留 67.3%。
f = 20 f = 20 f = 20 MHz(奈奎斯特频率):
ω = 2 π × 20 40 = π \omega = \frac{2\pi \times 20}{40} = \pi ω = 40 2 π × 20 = π
cos ω = − 1 , sin ω = 0 , cos 2 ω = 1 , sin 2 ω = 0 \cos\omega = -1, \quad \sin\omega = 0, \quad \cos 2\omega = 1, \quad \sin 2\omega = 0 cos ω = − 1 , sin ω = 0 , cos 2 ω = 1 , sin 2 ω = 0
Re = − 0.125 + 0.75 × ( − 1 ) + 0.375 × 1 = − 0.125 − 0.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 Re = − 0.125 + 0.75 × ( − 1 ) + 0.375 × 1 = − 0.125 − 0.75 + 0.375 = − 0.5
Im = 0 \text{Im} = 0 Im = 0
∣ H ∣ = 0.5 |H| = 0.5 ∣ H ∣ = 0.5
A = 20 log 10 ( 0.5 ) = − 6.02 dB A = 20\log_{10}(0.5) = -6.02 \text{ dB} A = 20 log 10 ( 0.5 ) = − 6.02 dB
奈奎斯特处衰减 6 dB,信号只剩一半。
汇总
频率
ω \omega ω (rad)
Re(H)
Im(H)
∥ 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 = 0 M b k ⋅ x [ n − k ] − ∑ k = 1 N a k ⋅ y [ n − k ] y[n] = \sum_{k=0}^{M} b_k \cdot x[n-k] - \sum_{k=1}^{N} a_k \cdot y[n-k] y [ n ] = k = 0 ∑ M b k ⋅ x [ n − k ] − k = 1 ∑ N a k ⋅ y [ n − k ]
展开写:
y [ n ] = b 0 ⋅ x [ n ] + b 1 ⋅ x [ n ! − ! 1 ] + ⋯ + b M ⋅ x [ n ! − ! M ] − a 1 ⋅ y [ n ! − ! 1 ] − a 2 ⋅ y [ n ! − ! 2 ] − ⋯ − a N ⋅ y [ 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] y [ n ] = b 0 ⋅ x [ n ] + b 1 ⋅ x [ n ! − ! 1 ] + ⋯ + b M ⋅ x [ n ! − ! M ] − a 1 ⋅ y [ n ! − ! 1 ] − a 2 ⋅ y [ n ! − ! 2 ] − ⋯ − a N ⋅ y [ n ! − ! N ]
和 FIR 的关键区别:等号右边出现了 y [ n − 1 ] , y [ n − 2 ] , … y[n-1], y[n-2], \ldots y [ n − 1 ] , y [ n − 2 ] , … (过去的输出),这构成了反馈回路 。输出会影响未来的输出,系统有”记忆”,冲激响应理论上无限长(不会像 FIR 那样在 N N N 个采样后自然归零)。
其中:
b k b_k b k 是前馈系数(feedforward),作用于输入 x x x ,共 M + 1 M+1 M + 1 个
a k a_k a k 是反馈系数(feedback),作用于历史输出 y y y ,共 N N N 个(a 0 = 1 a_0 = 1 a 0 = 1 已归一化)
M M M 是前馈阶数,N N N 是反馈阶数,系统阶数取两者的较大值
Z 域传递函数 对差分方程做 Z 变换(利用时移性质 y [ n − k ] ↔ z − k Y ( z ) y[n-k] \leftrightarrow z^{-k}Y(z) y [ n − k ] ↔ z − k Y ( z ) ):
Y ( z ) = ∑ k = 0 M b k z − k X ( z ) − ∑ k = 1 N a k z − k Y ( 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 ) = k = 0 ∑ M b k z − k X ( z ) − k = 1 ∑ N a k z − k Y ( z )
移项整理:
Y ( z ) ( 1 + ∑ k = 1 N a k z − k ) = X ( z ) ∑ k = 0 M b k z − k Y(z)\left(1 + \sum_{k=1}^{N} a_k z^{-k}\right) = X(z)\sum_{k=0}^{M} b_k z^{-k} Y ( z ) ( 1 + k = 1 ∑ N a k z − k ) = X ( z ) k = 0 ∑ M b k z − k
得到传递函数:
H ( z ) = Y ( z ) X ( z ) = ∑ k = 0 M b k z − k 1 + ∑ k = 1 N a k z − k = b 0 + b 1 z − 1 + ⋯ + b M z − M 1 + a 1 z − 1 + ⋯ + a N z − N H(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}} H ( z ) = X ( z ) Y ( z ) = 1 + ∑ k = 1 N a k z − k ∑ k = 0 M b k z − k = 1 + a 1 z − 1 + ⋯ + a N z − N b 0 + b 1 z − 1 + ⋯ + b M z − M
和 FIR 对比:FIR 的传递函数分母为 1(没有反馈),只有零点没有极点。IIR 的分母是 N N N 阶多项式,既有零点又有极点 。极点是 IIR 性能的核心——它们决定了频率响应的形状和系统的稳定性。
频率响应 令 z = e j ω z = e^{j\omega} z = e jω :
H ( e j ω ) = ∑ k = 0 M b k ⋅ e − j k ω 1 + ∑ k = 1 N a k ⋅ e − j k ω 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 ( e jω ) = 1 + ∑ k = 1 N a k ⋅ e − jkω ∑ k = 0 M b k ⋅ e − jkω
幅度响应:
∣ H ( e j ω ) ∣ = ∣ ∑ k = 0 M b k ⋅ e − j k ω ∣ ∣ 1 + ∑ k = 1 N a k ⋅ e − j k ω ∣ |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|} ∣ H ( e jω ) ∣ = 1 + ∑ k = 1 N a k ⋅ e − jkω ∑ k = 0 M b k ⋅ e − jkω
极点附近频率的分母接近零,幅度响应出现峰值(共振);零点附近频率的分子接近零,幅度响应出现凹谷(抑制)。设计 IIR 滤波器的本质就是把极点和零点放在合适的位置,雕刻出你想要的频率响应曲线。
稳定性 IIR 有反馈就有可能不稳定。稳定性判据是:
所有极点必须在单位圆内: ∣ z p ∣ < 1 \text{所有极点必须在单位圆内:} |z_p| < 1 所有极点必须在单位圆内: ∣ z p ∣ < 1
极点就是传递函数分母多项式的根。如果某个极点 z p z_p z p 的模 ∣ z p ∣ ≥ 1 |z_p| \geq 1 ∣ z p ∣ ≥ 1 ,系统的冲激响应会按 ∣ z p ∣ n |z_p|^n ∣ z p ∣ n 指数增长,输出发散。
直觉理解:反馈系数决定了”每一拍有多少比例的输出被重新注入系统”。如果反馈太强(系数太大),每一拍注入的能量比衰减的多,系统就像话筒对着音箱——越来越响直到爆掉。极点在单位圆内等价于反馈衰减率大于注入率,系统能自我收敛。
FIR 不存在这个问题,因为没有反馈,所有极点都在原点(z = 0 z = 0 z = 0 ),绝对稳定。
IIR 与 FIR 的对比
FIR
IIR
反馈
无
有
冲激响应
有限长(N + 1 N+1 N + 1 个点后归零)
无限长(理论上永不归零)
极点
全在原点,绝对稳定
在 z z z 平面任意位置,可能不稳定
线性相位
系数对称时严格线性
一般做不到线性相位
同等滤波效果的阶数
高(可能需要几十上百阶)
低(通常 2~6 阶就够)
资源消耗
N + 1 N+1 N + 1 个乘法器
通常远少于 FIR
设计方法
窗函数法 / 频率采样 / 最优化
模拟原型 + 双线性变换
一句话总结:FIR 用”数量”换”安全”(阶数多但绝对稳定),IIR 用”技巧”换”效率”(阶数少但需要仔细控制稳定性)。
为什么 IIR 的阶数低得多 根本原因是极点的存在 。FIR 只有零点,要实现陡峭的截止必须堆很多零点来逐步压低阻带增益。IIR 有极点可用:在通带边缘放一个极点会让该频率附近的增益急剧上升,配合零点在阻带的抑制,只需要很少的极零对就能构造出非常陡峭的过渡带。
一个二阶 IIR 的滚降是 -40 dB/dec,要达到同样的滚降,FIR 可能需要 30~50 阶。
2.2.2 一阶 IIR 一阶 IIR 是最简单的有反馈系统(N = 1 N=1 N = 1 ),只有一个极点。
一阶 IIR 低通 y [ n ] = ( 1 − a ) ⋅ x [ n ] + a ⋅ y [ n − 1 ] y[n] = (1-a) \cdot x[n] + a \cdot y[n-1] y [ n ] = ( 1 − a ) ⋅ x [ n ] + a ⋅ y [ n − 1 ]
传递函数:
H ( z ) = 1 − a 1 − a z − 1 H(z) = \frac{1-a}{1 - a z^{-1}} H ( z ) = 1 − a z − 1 1 − a
极点在 z = a z = a z = a ,没有零点。
直流增益 (ω = 0 , ; z = 1 \omega = 0, ; z = 1 ω = 0 ,; z = 1 ):H ( 1 ) = 1 − a 1 − a = 1 H(1) = \frac{1-a}{1-a} = 1 H ( 1 ) = 1 − a 1 − a = 1 ,直流全通。
奈奎斯特增益 (ω = π , ; z = − 1 \omega = \pi, ; z = -1 ω = π ,; z = − 1 ):H ( − 1 ) = 1 − a 1 + a H(-1) = \frac{1-a}{1+a} H ( − 1 ) = 1 + a 1 − a ,随 a a a 增大而减小。
a a a 越接近 1,极点越靠近单位圆,低频增益维持得越久才开始下降,截止频率越低。a a a 越接近 0,极点靠近原点,衰减从很低频就开始了,截止频率越高。
截止频率(-3 dB)的精确公式推导:
∣ H ( e j ω ) ∣ 2 = ( 1 − a ) 2 1 + a 2 − 2 a cos ω = 1 2 ⋅ ∣ H ( 0 ) ∣ 2 = 1 2 |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} ∣ H ( e jω ) ∣ 2 = 1 + a 2 − 2 a cos ω ( 1 − a ) 2 = 2 1 ⋅ ∣ H ( 0 ) ∣ 2 = 2 1
解出:
cos ω c = 2 a − ( 1 − a ) 2 ⋅ 0 . . . \cos\omega_c = \frac{2a - (1-a)^2 \cdot 0}{...} cos ω c = ... 2 a − ( 1 − a ) 2 ⋅ 0
比较复杂,近似公式(a a a 接近 1 时精度很好):
f c ≈ f s ⋅ ( 1 − a ) 2 π ⋅ a f_c \approx \frac{f_s \cdot (1-a)}{2\pi \cdot a} f c ≈ 2 π ⋅ a f s ⋅ ( 1 − a )
以 a = 0.5 , ; f s = 40 a = 0.5, ; f_s = 40 a = 0.5 ,; f s = 40 MHz 为例:f c ≈ 40 × 0.5 2 π × 0.5 ≈ 6.37 f_c \approx \frac{40 \times 0.5}{2\pi \times 0.5} \approx 6.37 f c ≈ 2 π × 0.5 40 × 0.5 ≈ 6.37 MHz。
一阶 IIR 高通 y [ n ] = a ⋅ ( y [ n − 1 ] + x [ n ] − x [ n − 1 ] ) y[n] = a \cdot (y[n-1] + x[n] - x[n-1]) y [ n ] = a ⋅ ( y [ n − 1 ] + x [ n ] − x [ n − 1 ])
展开:y [ n ] = a ⋅ y [ n − 1 ] + a ⋅ x [ n ] − a ⋅ x [ n − 1 ] y[n] = a \cdot y[n-1] + a \cdot x[n] - a \cdot x[n-1] y [ n ] = a ⋅ y [ n − 1 ] + a ⋅ x [ n ] − a ⋅ x [ n − 1 ]
传递函数:
H ( z ) = a ( 1 − z − 1 ) 1 − a z − 1 H(z) = \frac{a(1 - z^{-1})}{1 - a z^{-1}} H ( z ) = 1 − a z − 1 a ( 1 − z − 1 )
和低通对比,分母(极点)完全一样,区别全在分子:多了 ( 1 − z − 1 ) (1 - z^{-1}) ( 1 − z − 1 ) ,在 z = 1 z = 1 z = 1 (直流)引入零点。
直流增益 :H ( 1 ) = a ( 1 − 1 ) 1 − a = 0 H(1) = \frac{a(1-1)}{1-a} = 0 H ( 1 ) = 1 − a a ( 1 − 1 ) = 0 ,直流完全抑制。
奈奎斯特增益 :H ( − 1 ) = a ( 1 + 1 ) 1 + a = 2 a 1 + a H(-1) = \frac{a(1+1)}{1+a} = \frac{2a}{1+a} H ( − 1 ) = 1 + a a ( 1 + 1 ) = 1 + a 2 a ,接近 1(a → 1 a \to 1 a → 1 时趋近 1)。
截止频率近似公式和低通相同:
f c ≈ f s ⋅ ( 1 − a ) 2 π ⋅ a f_c \approx \frac{f_s \cdot (1-a)}{2\pi \cdot a} f c ≈ 2 π ⋅ a f s ⋅ ( 1 − a )
以 a = 0.73 , ; f s = 40 a = 0.73, ; f_s = 40 a = 0.73 ,; f s = 40 MHz 为例:f c ≈ 40 × 0.27 2 π × 0.73 ≈ 2.35 f_c \approx \frac{40 \times 0.27}{2\pi \times 0.73} \approx 2.35 f c ≈ 2 π × 0.73 40 × 0.27 ≈ 2.35 MHz。
一阶 IIR 的局限性 和一阶 FIR 类似,一阶 IIR 的滚降只有 -20 dB/dec(-6 dB/oct),过渡带很宽。如果需要更陡的截止,必须提升阶数。
但一阶 IIR 比一阶 FIR 有一个决定性优势:可调性 。FIR 的频率响应由系数固定,改截止频率就要重新设计整组系数。一阶 IIR 只需要改一个参数 a a a ,截止频率连续可调,而且直流增益始终为 1(低通)或 0(高通),不需要额外归一化。
2.2.3 多阶 IIR 阶数与性能的关系 增加阶数 N N N 的效果:
过渡带变窄 :滚降从 -20 dB/dec(一阶)变成 -40 dB/dec(二阶)、-60 dB/dec(三阶)……
频率响应形状更灵活 :更多极零对可以精细雕刻通带、阻带、过渡带
稳定性风险增大 :极点越多,越容易有某个极点跑到单位圆外
相位非线性加重 :极点越多,群延迟波动越大
经典模拟原型 高阶 IIR 通常不直接在 z z z 域设计,而是先在连续域(s s s 域)设计一个模拟滤波器原型,再通过双线性变换映射到 z z z 域。四种经典原型:
Butterworth(巴特沃斯): 通带最大平坦(没有波纹),但过渡带最宽。N N N 阶 Butterworth 的极点均匀分布在 s s s 平面左半圆上。如果对通带内的平坦度要求很高(比如测量仪器),选它。
Chebyshev I(切比雪夫 I 型): 允许通带内有等波纹,换来更窄的过渡带。波纹幅度由参数指定(比如 1 dB)。同样阶数下过渡带比 Butterworth 窄约 30%~50%,代价是通带不平坦。
Chebyshev II(切比雪夫 II 型): 通带平坦,但阻带有等波纹。适合”通带一定要平、阻带可以有纹”的场景。
Elliptic(椭圆 / Cauer): 通带和阻带都允许等波纹。同样阶数下过渡带最窄,代价是相位非线性最严重。如果阶数受限但对过渡带要求苛刻,选它。
类型
通带
阻带
过渡带
相位
Butterworth
最大平坦
单调下降
最宽
较好
Chebyshev I
等波纹
单调下降
较窄
较差
Chebyshev II
最大平坦
等波纹
较窄
较差
Elliptic
等波纹
等波纹
最窄
最差
从 Butterworth 到 Elliptic,过渡带依次变窄,但相位非线性和通带/阻带波纹依次加重。没有”最好的”,只有”最适合你需求的”。
双线性变换 模拟原型 H a ( s ) H_a(s) H a ( s ) 映射到数字域 H ( z ) H(z) H ( z ) 的标准方法。映射公式:
s = 2 T ⋅ 1 − z − 1 1 + z − 1 s = \frac{2}{T} \cdot \frac{1 - z^{-1}}{1 + z^{-1}} s = T 2 ⋅ 1 + z − 1 1 − z − 1
几何意义:
s s s 平面的虚轴(j Ω j\Omega j Ω )映射到 z z z 平面的单位圆
s s s 的左半平面映射到 z z z 的单位圆内部
稳定的模拟滤波器映射后仍然稳定
代价是频率轴被非线性压缩。模拟频率 Ω \Omega Ω 和数字频率 ω \omega ω 的关系:
Ω = 2 T tan ω 2 \Omega = \frac{2}{T}\tan\frac{\omega}{2} Ω = T 2 tan 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 低通为例,f c = 5 f_c = 5 f c = 5 MHz,f s = 40 f_s = 40 f s = 40 MHz:
Step 1:频率预畸变
ω c = 2 π f c f s = 2 π × 5 40 = π 4 \omega_c = \frac{2\pi f_c}{f_s} = \frac{2\pi \times 5}{40} = \frac{\pi}{4} ω c = f s 2 π f c = 40 2 π × 5 = 4 π
Ω c = 2 T tan ω c 2 = 2 f s tan π / 4 2 = 80 × 10 6 × tan ( 0.3927 ) = 80 × 10 6 × 0.4142 = 33.14 × 10 6 \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 Ω c = T 2 tan 2 ω c = 2 f s tan 2 π /4 = 80 × 1 0 6 × tan ( 0.3927 ) = 80 × 1 0 6 × 0.4142 = 33.14 × 1 0 6
Step 2:二阶 Butterworth 模拟原型
归一化原型:H a ( s ) = 1 s 2 + 2 s + 1 H_a(s) = \frac{1}{s^2 + \sqrt{2}s + 1} H a ( s ) = s 2 + 2 s + 1 1
去归一化(s → s / Ω c s \to s/\Omega_c s → s / Ω c ):H a ( s ) = Ω c 2 s 2 + 2 Ω c s + Ω c 2 H_a(s) = \frac{\Omega_c^2}{s^2 + \sqrt{2}\Omega_c s + \Omega_c^2} H a ( s ) = s 2 + 2 Ω c s + Ω c 2 Ω c 2
Step 3:双线性变换
代入 s = 2 T ⋅ 1 − z − 1 1 + z − 1 s = \frac{2}{T} \cdot \frac{1-z^{-1}}{1+z^{-1}} s = T 2 ⋅ 1 + z − 1 1 − z − 1 ,经过代数化简(过程较繁琐,此处给出结果),得到:
H ( z ) = 0.0675 ( 1 + 2 z − 1 + z − 2 ) 1 − 1.1430 z − 1 + 0.4128 z − 2 H(z) = \frac{0.0675(1 + 2z^{-1} + z^{-2})}{1 - 1.1430z^{-1} + 0.4128z^{-2}} H ( z ) = 1 − 1.1430 z − 1 + 0.4128 z − 2 0.0675 ( 1 + 2 z − 1 + z − 2 )
验证:
直流增益(z = 1 z=1 z = 1 ):H ( 1 ) = 0.0675 × 4 1 − 1.1430 + 0.4128 = 0.2700 0.2698 ≈ 1.0 H(1) = \frac{0.0675 \times 4}{1 - 1.1430 + 0.4128} = \frac{0.2700}{0.2698} \approx 1.0 H ( 1 ) = 1 − 1.1430 + 0.4128 0.0675 × 4 = 0.2698 0.2700 ≈ 1.0 (正确,低通直流增益为 1)
极点:解 1 − 1.1430 z − 1 + 0.4128 z − 2 = 0 1 - 1.1430z^{-1} + 0.4128z^{-2} = 0 1 − 1.1430 z − 1 + 0.4128 z − 2 = 0 ,得 z = 0.5715 ± j 0.3958 z = 0.5715 \pm j0.3958 z = 0.5715 ± j 0.3958 ,∣ z ∣ = 0.695 < 1 |z| = 0.695 < 1 ∣ z ∣ = 0.695 < 1 (稳定)
零点:z = − 1 z = -1 z = − 1 (双重零点),对应奈奎斯特频率的完全抑制
对应的差分方程:
y [ n ] = 0.0675 ⋅ x [ n ] + 0.1350 ⋅ x [ n ! − ! 1 ] + 0.0675 ⋅ x [ n ! − ! 2 ] + 1.1430 ⋅ y [ n ! − ! 1 ] − 0.4128 ⋅ y [ 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] y [ n ] = 0.0675 ⋅ x [ n ] + 0.1350 ⋅ x [ n ! − ! 1 ] + 0.0675 ⋅ x [ n ! − ! 2 ] + 1.1430 ⋅ y [ n ! − ! 1 ] − 0.4128 ⋅ y [ n ! − ! 2 ]
只需要 5 次乘法 + 4 次加法就实现了一个 -40 dB/dec 滚降的低通滤波器。如果用 FIR 达到同样的滚降和过渡带宽度,可能需要 30+ 个 tap(30+ 次乘法)。
2.2.4 IIR 交互仿真 下方交互组件支持调节滤波器类型(低通/高通)、阶数(一阶/二阶)、系数 a a a 和采样率,实时观察幅度响应、相位响应、冲激响应和系数值。
特别注意:把系数 a a a 拖到大于 1.0 时,极点会跑到单位圆外,系统变得不稳定。切到”冲激响应”标签页可以直观看到输出如何指数发散。
交互实验建议
观察 a a a 对截止频率的影响 :固定一阶高通 + fs=40MHz,把 a a a 从 0.1 拖到 0.99,观察截止频率从十几 MHz 降到接近 0 的过程。a a a 越接近 1,高通只滤掉极低频的直流分量
对比一阶和二阶 :固定高通 + a=0.73 + fs=40MHz,切换一阶和二阶。二阶的过渡带明显更陡(-40 dB/dec vs -20 dB/dec),但通带接近奈奎斯特时的行为也不同
观察不稳定 :把 a a a 拖到 1.05 或更大,切到”冲激响应”标签页。稳定时冲激响应逐渐衰减趋近零,不稳定时指数增长(红色柱子越来越高)。这就是极点在单位圆外的物理含义
对比高通和低通的冲激响应 :同样 a = 0.73 a=0.73 a = 0.73 ,低通的冲激响应全是正值(指数衰减),高通的冲激响应正负交替(因为分子有 ( 1 − z − 1 ) (1-z^{-1}) ( 1 − z − 1 ) 差分因子)
临界稳定(a = 1.00 a = 1.00 a = 1.00 ) :冲激响应既不增长也不衰减,保持常数或等幅振荡。这是稳定和不稳定的精确分界点,对应极点恰好在单位圆上