4、巴特沃斯滤波器设计:幅度平方函数、极点分布、阶数确定与截止频率计算
巴特沃斯滤波器,圈里人常叫它“最平坦滤波器”。为啥?因为它的通带响应平坦得跟镜子似的,几乎没有纹波。我刚开始学滤波那会儿,第一个上手的就是它——好算、好理解、不容易出错。
说白了,巴特沃斯的核心思想就一句话:在通带内尽可能平坦,在阻带内尽可能陡峭。但天下没有免费的午餐,平坦的代价就是过渡带比切比雪夫、椭圆滤波器都要宽。选不选它,看你项目里对通带纹波的要求有多苛刻。
4.1 幅度平方函数——巴特沃斯的“身份证”
巴特沃斯滤波器的幅度平方函数长这样:
|H(jΩ)|² = 1 / (1 + (Ω/Ωc)^(2N))
其中:
- Ω:模拟角频率(rad/s)
- Ωc:截止频率(-3dB 点)
- N:滤波器阶数
这个公式看着简单,但信息量很大。我带你拆开看:
- 当 Ω = 0 时,|H(j0)|² = 1,直流信号无损通过。
- 当 Ω = Ωc 时,|H(jΩc)|² = 1/2,对应 -3dB 衰减——这就是截止频率的定义。
- 当 Ω → ∞ 时,|H(jΩ)|² → 0,高频被抑制。
关键点:N 越大,通带越平坦,阻带衰减越快。但阶数每增加一阶,硬件复杂度就翻倍。我在一个传感器信号调理项目里,为了省成本把阶数从 6 阶降到 4 阶,结果阻带衰减不够,50Hz 工频干扰没压住……后来老老实实加回了 6 阶。
4.2 极点分布——藏在 s 平面里的秘密
从幅度平方函数到极点分布,我们需要做一步解析延拓。令 s = jΩ,代入幅度平方函数:
H(s)H(-s) = 1 / (1 + (s/jΩc)^(2N))
分母的根就是系统的极点。解这个方程:
1 + (s/jΩc)^(2N) = 0
→ s^(2N) = -(jΩc)^(2N)
→ s^(2N) = Ωc^(2N) · e^(j(2N-1)π)
所以极点为:
s_k = Ωc · e^(j(2k+N-1)π/(2N)),k = 0, 1, ..., 2N-1
这 2N 个极点均匀分布在 s 平面的一个圆上,半径就是 Ωc。但只有左半平面的 N 个极点才是稳定的——右半平面的极点对应不稳定系统,直接扔掉。
嗯,这里要注意:极点的角度间隔是 π/N,而且第一个极点从角度 π/(2N) 开始。我当年考试时老记错起始角度,后来画了个单位圆才彻底搞明白。
我的习惯:设计时先把 N 个左半平面极点的角度算出来,画个草图。这样后面写传递函数时不容易漏项。
举个例子,N=4 时,左半平面极点的角度为:
k=0: 5π/8 (112.5°)
k=1: 7π/8 (157.5°)
k=2: 9π/8 (202.5°)
k=3: 11π/8 (247.5°)
这些极点关于实轴对称,且都在左半平面。
4.3 阶数确定——到底要几阶才够用?
阶数 N 决定了滤波器的“陡峭程度”。怎么算?从阻带指标反推。
假设你有一个阻带要求:在 Ω = Ωs 处,衰减至少 As dB。代入幅度平方函数:
|H(jΩs)|² = 1 / (1 + (Ωs/Ωc)^(2N))
衰减 As dB 对应 |H(jΩs)|² = 10^(-As/10),所以:
10^(-As/10) = 1 / (1 + (Ωs/Ωc)^(2N))
→ 1 + (Ωs/Ωc)^(2N) = 10^(As/10)
→ (Ωs/Ωc)^(2N) = 10^(As/10) - 1
两边取对数:
2N · log10(Ωs/Ωc) = log10(10^(As/10) - 1)
→ N = ceil( log10(10^(As/10) - 1) / (2 · log10(Ωs/Ωc)) )
注意,结果要向上取整。为什么?因为阶数必须是整数,而且取整后实际衰减只会比要求更好,不会更差。
我曾经踩过的坑:有一次算出来 N=3.2,我心想四舍五入取 3 得了。结果仿真出来阻带衰减差了 2dB,没通过评审。后来老老实实取 4,一次过。记住:阶数计算只入不舍。
举个例子:设计一个巴特沃斯低通滤波器,要求 Ωc = 1000 rad/s,在 Ωs = 2000 rad/s 处衰减至少 30dB。
N = ceil( log10(10^(30/10) - 1) / (2 · log10(2000/1000)) )
= ceil( log10(1000 - 1) / (2 · log10(2)) )
= ceil( log10(999) / (2 · 0.3010) )
= ceil( 2.9996 / 0.6021 )
= ceil( 4.98 )
= 5
所以需要 5 阶。
4.4 截止频率计算——别被“-3dB”骗了
巴特沃斯的截止频率 Ωc 就是 -3dB 点,这个定义很清晰。但实际设计中,Ωc 不一定等于你想要的通带边界频率。
举个例子:你希望通带边界在 1000 rad/s 处衰减不超过 1dB。这时候 Ωc 就不能直接取 1000,而要重新算。
设通带边界频率为 Ωp,允许的最大衰减为 Ap dB:
|H(jΩp)|² = 1 / (1 + (Ωp/Ωc)^(2N)) = 10^(-Ap/10)
→ (Ωp/Ωc)^(2N) = 10^(Ap/10) - 1
→ Ωc = Ωp / (10^(Ap/10) - 1)^(1/(2N))
你看,Ωc 比 Ωp 要大一些。说白了,为了让通带边界处的衰减控制在 Ap 以内,截止频率必须往高频方向“让一让”。
我建议:设计时先确定阶数 N,再根据通带指标反算 Ωc。这样能保证通带和阻带同时满足要求。别先定 Ωc 再算 N,容易顾此失彼。
4.5 设计流程总结
把上面这些串起来,巴特沃斯低通滤波器的设计流程就是:
- 明确指标:通带边界 Ωp、通带最大衰减 Ap、阻带边界 Ωs、阻带最小衰减 As。
- 计算阶数 N:用阻带指标反推,结果向上取整。
- 计算截止频率 Ωc:用通带指标反算,确保通带衰减不超标。
- 求极点分布:根据 N 和 Ωc,计算左半平面极点。
- 写传递函数:由极点构建 H(s),通常写成连乘形式或级联二阶节。
| 步骤 | 输入 | 输出 | 公式/方法 |
|---|---|---|---|
| 1. 指标定义 | Ωp, Ap, Ωs, As | 设计约束 | 用户需求 |
| 2. 阶数计算 | Ωs, Ωc, As | N(整数) | N = ceil( log10(10^(As/10)-1) / (2·log10(Ωs/Ωc)) ) |
| 3. 截止频率 | Ωp, Ap, N | Ωc | Ωc = Ωp / (10^(Ap/10)-1)^(1/(2N)) |
| 4. 极点求解 | N, Ωc | 左半平面极点 | s_k = Ωc · e^(j(2k+N-1)π/(2N)) |
| 5. 传递函数 | 极点 | H(s) | H(s) = Ωc^N / ∏(s - s_k) |
一句话总结:巴特沃斯设计就是“先定阶数满足阻带,再调截止频率满足通带”。这个顺序别搞反了,否则你算出来的滤波器可能通带衰减超标。