一阶低通滤波器截止频率怎么选?信号保真与噪声抑制的平衡技巧
2026/9/6 11:19:16 网站建设 项目流程

1. 先别急着套公式,想想你手里的信号长什么样

一阶低通滤波大概是嵌入式、电子设计里最常见、最不起眼,但坑最多的小环节。RC滤波、运放低通、软件一阶惯性环节,本质都是同一个数学模型,而选截止频率这个动作,几乎决定了整个系统是“干净”还是“假干净”。很多朋友上来就百度公式 fc = 1 / (2πRC),然后挑个电阻电容怼上去,滤波效果却总是不对劲——要么信号变迟钝,要么噪声纹丝不动。问题多半不在公式,而在你根本没说清楚:你究竟想滤掉什么,又必须保留什么

我做过几年传感器采集和电机控制相关的项目,在这件事上交过不少学费。这篇就专门聊聊一阶低通截止频率的选法,从最基本的物理意义讲到具体怎么算、怎么测、怎么根据场景调。内容偏实操,文末也会给一个可以直接参考的经验区间表,希望能帮你少走点弯路。

先说个最直观的例子。你要测一个缓慢变化的温度信号,比如室温,大概每几秒才波动一次;但采集到的原始数据里混着50Hz工频干扰和一堆高频毛刺。这时候你把截止频率设在100Hz行不行?大部分情况是不行。因为50Hz工频干扰还没被滤干净,而信号本身又是低频,你完全可以、也应该把截止频率压低到5Hz甚至更低。反过来,如果你在做音频采集,要保留20kHz以内的声音,截止频率设在100Hz那声音就全闷掉了。这个道理听着简单,但实际里很多人把截止频率设得太接近信号频率,导致幅值衰减、相位滞后,系统表现反而更差——这是最常见的坑之一。

那截止频率到底“截止”的是什么?得先把这句话掰扯清楚。一阶低通滤波器的幅频响应是:频率越低,信号越能原样通过;频率越高,衰减越大。截止频率 fc 的定义是增益下降到 -3dB(也就是幅值衰减到约0.707倍)的那个频点。注意,这绝不意味着高于 fc 的信号就瞬间没了,而是一阶滤波器只有20dB/十倍频程的滚降速度。也就是说,如果 fc 是100Hz,那么到了1000Hz,幅值衰减到原来的1/10;到了10kHz,再衰减到1/10。所以如果噪声刚好在 fc 附近,它只会被衰减3dB,仍然实实在在留在信号里。理解这一点,你就知道“选截止频率”的本质是在噪声抑制和信号保真之间找平衡

2. 公式谁都会背,但物理意义和“10倍频”法则你得吃透

2.1 RC滤波的截止频率到底怎么算

一阶RC低通滤波器,就是把电阻和电容串起来,从电容两端取输出。它的截止频率公式是:

fc = 1 / (2π × R × C)

这个公式的推导可以从RC电路的阻抗分压来理解。电容的容抗是 1/(2πfC),当容抗恰好等于电阻值时,输出电压的幅值就是输入的 1/√2(约0.707),对应-3dB,这时的频率就是fc。所以本质上,截止频率是电阻和电容的分界点,而不是某种硬性切割。

实际选型时要注意单位。R用欧姆,C用法拉。如果电阻10kΩ,电容100nF,那 fc = 1 / (2π × 10000 × 100 × 10⁻⁹) ≈ 159Hz。这个是硬件RC滤波。如果是软件滤波,常见的一阶惯性环节写法是 y[n] = y[n-1] + α × (x[n] - y[n-1]),这里的 α 和截止频率的关系不是线性的,它和采样周期 Ts 有关。近似关系是 α ≈ 2π × fc × Ts(前提是 fc × Ts 远小于0.5)。假设采样率1kHz,想要20Hz的截止频率,Ts=0.001s,算下来 α ≈ 0.1257。当然这是近似值,更严谨的做法是用双线性变换或直接做Z变换推导,但对多数应用,这个近似足够用。

2.2 为什么大家都说“截止频率要离信号频率10倍远”

这算是经验法则,但也有理论依据。一阶滤波器在截止频率处就有3dB的幅值损耗——也就是信号已经衰减了约30%。如果你的信号频率正好卡在 fc 附近,你可能连信号的真实幅值都测不准。而截止频率低于信号频率10倍时,衰减已经降到很小,相位滞后也不明显,信号保真度基本能满足大部分工程要求。

相位滞后这件事经常被忽略,却往往是最致命的。一阶低通在 fc 处的相位滞后是45度,在10倍 fc 处大约是5.7度,在0.1倍 fc 处不到0.6度。如果你做的是实时控制,比如电机电流环、PLL锁相环,几度的相位滞后可能就导致系统不稳定。我做过一个电流采样滤波,用了截止频率1kHz的低通去滤开关噪声,采样频率20kHz,结果电流环相位裕度大幅下降,波形开始振荡。后来把截止频率提到5kHz,噪声虽然多一点,但系统稳定了,总比高速振荡强得多。所以控制环路的滤波器截止频率不是越低越好,要考虑环路相位预算

另一个常见的误区是“截止频率越高,滤波效果越好”——这句话只对了一半。截止频率越高,越多的噪声会被放进来;但截止频率太低,信号本身也会被衰减。信号和噪声的频谱如果隔得近,一阶滤波是救不了的,因为这玩意儿滚降速度太慢。这个时候你该考虑二阶、巴特沃斯,甚至自适应滤波。

3. 选截止频率前,先分析你的信号和噪声频谱

3.1 信号最高频率怎么定:别凭感觉,去看频谱

选截止频率的第一步,不是找公式,而是搞清楚信号本身的频率成分。从我实际操作的经验来看,最直接的办法是先抓一段数据做FFT频谱分析。不管用MATLAB、Python的numpy,还是单片机上移植个简易FFT,都行。你让系统实际跑起来,采一段有代表性的信号,看看频谱里哪些峰是真实信号,哪些峰是噪声,然后再决定把 fc 放在哪个频段。

有一次我做振动监测,传感器输出里有一个大约30Hz的振动峰,这是真正的信号;同时电源引入了120Hz的纹波分量。这个时候如果你把 fc 设在50Hz看似不错,但120Hz的噪声被衰减得不够干净,因为一阶滤波在120Hz处相对30Hz只多了不到12dB的衰减。后来我把 fc 设为15Hz,30Hz信号衰减了约3dB,但120Hz噪声被压得更狠,再用软件做幅值补偿,整体效果才算能接受。

如果你的信号本身是方波或PWM,那情况又不一样了。方波的有效信息其实由基波和谐波组成,要保留方波的“方”,不但基频要留,直到5到10次谐波都得留,那截止频率就得比基频高一个量级。反过来,如果只是测幅值、看趋势,那就没必要管谐波,按基波频率的1/10到1/3去选就够了。

3.2 噪声来源不同,截止频率命运完全不同

分析完信号,再分析噪声。噪声不是只有一种,不同来源的噪声频谱差异很大,你的 fc 要针对“最顽固”的那部分噪声去打。

白噪声/宽频噪声:这类噪声均匀分布在整个频段,唯一能靠低通压制的方法就是把 fc 尽量压低。但是压低 fc 会拖慢响应速度,所以这是典型的分母博弈。

特定频点噪声(50Hz工频、开关频率及其谐波):先用陷波器或者同步采样会更合适,单纯靠低通会误伤有效信号。但如果你就是不想加陷波器,那一阶低通只能在高于这个频点一定距离处设置 fc,利用滚降来衰减。比如50Hz工频,你把 fc 设在10Hz,那50Hz处能衰减约14dB,但对于大多数场景并不够干净。

高频尖峰/毛刺:这类噪声能量集中在很高的频段,比如开关电源的dV/dt尖峰,这时候 fc 不用特别低,只需避开信号频率和尖峰频率之间的空间即可。比如信号10Hz,噪声100kHz,那把 fc 设在100Hz到1kHz之间,都能把100kHz衰减得非常彻底,一阶滤波滚降虽然只有20dB/十倍频,但十倍频程多来几个,衰减就非常可观了。

记住一句话:你把 fc 放在噪声比较集中的频段以下,但又不能低于信号频率的3到10倍,这个区间才是你的可选范围。区间大小取决于信号与噪声之间的频谱间距。

4. 实战流程:从计算到验证,手把手走一遍

4.1 一套可复用的截止频率选型步骤

下面这套流程是我自己摸索出来的,基本能覆盖大多数一阶低通滤波的选型需求,不管硬件还是软件都能套用。

  1. 采集一段最恶劣工况下的原始信号,就是噪声最大、信号最真实的那个状态。采样率要足够,最好至少是信号频率的20倍以上,采样点数要多,做过零分析或FFT才靠谱。
  2. 做频谱分析。看两个东西:信号能量集中在哪个频段,噪声能量集中在哪个频段。把两者的交叠区域标记出来。如果交叠严重,一阶低通可能根本不够用,劝你早点换方案。
  3. 估算你能接受的信号衰减上限。比如应用要求信号幅值误差不超过5%,那对应的一阶低通衰减频率不能超过约0.1倍fc,因为一阶低通在0.1倍fc处衰减不到1%。如果只要求趋势,误差不超过20%,那频率可以放到0.5倍fc左右。
  4. 估算相位滞后上限。如果是控制环路,参考相位裕度分配;如果是普通数据采集,暂时可以忽略,但仍建议控制在10度以内。
  5. 选定 fc。范围是 max(信号频率×3, 噪声最低频率的0.1到0.3倍) ,再兼顾相位预算做微调。实在没有明确的噪声频谱边界,就选信号频率的10倍,再向下试探看噪声能否被压下去。
  6. 实测验证:看滤波后的信号形状有没有明显失真、幅值有没有明显减小、噪声是否降到可接受的程度,必要时用阶跃响应看响应时间是否满足要求。如果不行就反复调整,直到找到平衡点。

4.2 硬件RC和软件滤波的参数计算示例

举一个完整的例子。假设你做一个电池电压采集,信号本身是一个大约10Hz以内的缓变电压,噪声是开关频率100kHz的纹波。硬件上用RC低通,要求纹波衰减至少到原来的1%,同时10Hz信号幅值损失不超过1%。

  • 10Hz信号幅值损失不超过1%,也就是在10Hz处增益要大于0.99。一阶低通幅频响应是 1 / √(1 + (f/fc)²),要让 f=10Hz时增益为0.99,解得 fc ≥ 10 / √(1/0.99² - 1) ≈ 70Hz。取整选75Hz。
  • 100kHz纹波衰减到1%,也就是增益=0.01,则 1 / √(1 + (100000/fc)²) = 0.01,解得 fc ≈ 1000Hz。也就是说 fc 要低于1000Hz才能满足100kHz衰减到1/100。
  • 两个条件要同时满足,取 75Hz < fc < 1000Hz,通常选一个几何中心,比如300Hz左右,这样10Hz信号只衰减0.05%,100kHz纹波衰减约1/333,远好于1%。
  • 然后根据 fc=300Hz 去选RC值:R=10kΩ,C=1/(2π×10k×300) ≈ 53nF,取标准值47nF,实际 fc ≈ 338Hz,也还在范围内。这种取法非常实用:先算电阻,再确定电容,电阻取值尽量在kΩ级别,电流驱动能力、热噪声都还能接受。

如果是软件实现,那就简单了。采样率Fs=1kHz,想选 fc=10Hz,用近似公式 α ≈ 2π × 10 / 1000 ≈ 0.0628。用这个α做一阶IIR滤波即可。但要提醒一下,如果你用的采样率变了,α必须重新算,这个近似公式的前提是 fc << Fs,如果 fc/Fs 超过0.1,建议直接用双线性变换或查表。

4.3 阶跃响应和调整技巧:如何判断“滤波变迟钝”到底可不可接受

这个在工程里比频谱分析更直观。你把输入接一个阶跃信号,比如从0跳到满量程,然后在输出端看波形爬升到63.2%的时间——也就是时间常数 τ = 1/(2πfc)。fc越低,τ越大,响应越慢。如果你的系统要求阶跃后100ms内稳定到95%以内,那可以算一下:-ln(0.05)/(2πfc) < 0.1s,解得 fc > 4.8Hz。再结合噪声抑制要求,便能压缩出一个可接受的范围。

这里说一个我踩过的坑:以前做IMU姿态解算,为了滤掉高频振动,我把截止频率一路降到2Hz,结果实际飞行时姿态响应整整慢了接近200ms,飞控调整特别迟钝,一度以为是PID参数问题。后来检查发现滤波器时间常数已经远远超过了系统的控制周期和运动带宽,等系统反应过来,误差已经积累到离谱了。后来我把截止频率提高到15Hz,姿态响应快得多,高频振动靠后续的互补滤波来补。滤波器不是放到系统里就不管了,它本身也是系统动力学的一部分,一定要跟整个闭环的带宽做匹配

5. 不同应用场景的截止频率选择经验区间

不同应用里信号和噪声差异太大了,我给一个基于实际工程的经验参考表,但只做起点,不要当万能公式。尤其是传感器类型、线路阻抗、采样率变化时,对应区间的偏移可能非常大。

应用场景典型信号频率常见噪声源一阶低通截止频率参考区间备注
室温/环境温度采集0.01~1 Hz50Hz工频、电源噪声0.1~5 Hz响应要求极低,可以放心压低
电池电压监测0.1~10 Hz开关纹波(几十kHz~MHz)10~500 Hz根据纹波衰减目标选fc
电机相电流采样1~1000 Hz(基波)PWM开关噪声(10~20kHz)1~5 kHz控制器带宽要高于电流环需求
音频信号采集20 Hz~20 kHz电磁干扰、电源噪声20~30 kHz一般不滤高频成分,按奈奎斯特设
IMU/加速度计0.1~50 Hz(姿态,振动可达几百Hz)机械振动、电磁干扰10~100 Hz根据运动带宽和振动频谱取舍
血压/呼吸等医学信号0.05~10 Hz工频、肌电干扰5~30 Hz需要权衡脉搏波细节保留

表格里的数字是参考起点,不是终点。我见过测量电池电压用0.1Hz滤波的,也见过电流采样用100kHz RC滤波的(主要滤射频噪声),关键还是回到信号分析和响应速度需求这两个核心约束上。

再说说传感器输出阻抗这一个隐蔽问题。有些传感器输出阻抗很高,比如pH电极、压电传感器,如果你直接接RC滤波,电阻和传感器内阻会分压,不仅影响截止频率精度,还可能导致信号直流偏置异常。这种情况建议先去缓冲器(电压跟随器),再做滤波。同理,RC滤波后接ADC时,ADC的采样电容会在采样瞬间抽取电荷,也相当于一个并联阻抗,会改变实际截止频率。最好在RC后面加一个运放跟随,或者把ADC采样率提高再软件平均。

6. 常见错误、坑点与排查技巧

6.1 一个表格看清你容易踩哪些雷

问题现象根本原因解决方向
截止频率设太高噪声还是很多,波形毛刺fc 离噪声太近,衰减不够看频谱,把 fc 往噪声左侧压低
截止频率设太低信号严重滞后、幅值变小fc 低于或接近信号频率提高 fc,或改用更高阶但延迟可控的滤波器
信号频率刚好等于 fc幅值掉到0.7,相位滞后45°违背3~10倍频法则把 fc 至少提到信号频率3倍以上
RC值选错导致 fc 严重漂移实测和理论对不上传感器内阻、ADC采样电容并联加缓冲器,用高精度阻容
软件滤波 α 没随采样率调整换了采样率后曲线异常α 和 Ts 强相关每次改采样率都重算 α
只滤了一个环节,后续依然脏滤波后还有周期噪声噪声是多来源叠加逐段查噪声来源,区分传导和辐射
一阶滤波压不住宽带噪声怎么调都两难滚降不够陡,信号和噪声频带重叠上二阶低通或Notch滤波器,或锁相采样

6.2 用“先看频谱,再调截止频率”代替瞎蒙

如果只给你一个建议,那就是不要跳过频谱分析这一步。我见过太多人在没有看频谱的情况下盲目选fc,最后全靠运气调。现在的工具链已经很便宜了,几百块钱的逻辑分析仪或者示波器带FFT,或者直接用Python读串口数据做fft,都行。你不需要分析出所有细节,只要能分辨出信号峰和噪声峰的大致位置就行。有了这个基础,选fc最多花十分钟,而且每个改动都有依据,出问题也容易排查。

另外有个小技巧我经常用:把原始信号和滤波后的信号画在同一个图里,肉眼观察。如果滤波后信号在幅值上明显变小,大概率fc压太低;如果噪声减少但波形形状依然扭曲,可能是相位失真导致,考虑增大fc或用零相位滤波(离线处理时)来解决。这个方法虽然简单,但在工位上调试的时候省了很多时间。

6.3 关于“升级为多阶滤波”的一点个人看法

一阶滤波结构简单、计算量小,但它最大的短板就是滚降只有20dB/十倍频程。如果噪声源离信号源只有2到3个倍频程的距离,一阶滤波基本无法两全。这种情况下我的个人选择是:能用一阶的优先用一阶,因为稳定、直观、好调试;实在不够再上二阶

二阶巴特沃斯低通在截止频率附近更平直,滚降是40dB/十倍频程,可以更狠地压噪声。但代价是相位滞后变成90度(二阶在fc处),对控制环路压力更大,而且Q值选择不对会产生共振峰。软件实现二阶IIR(Biquad)也很简单,但系数计算需要一点信号处理基础。如果只是类似ADC数据平滑这种对相位不敏感的应用,一阶绝对够用;如果是闭环控制,我用过多次之后还是觉得优先尝试调高fc,而不是直接换高阶滤波——因为高阶滤波器把相位预算吃掉后,系统稳定性往往更难搞。

7. 从“会算截止频率”到“会定截止频率”

算 fc 是小学数学,定 fc 是工程学。前面写了这么多,核心观点就一句话:截止频率不是一个孤立的电子参数,它是信号保真、噪声抑制、系统响应速度和相位稳定性四个维度交叉妥协出来的结果。每次选型前,强制自己回答四个问题:信号最高频率是多少?噪声主要分布在哪个频段?这个应用允许多大的信号幅值误差?系统允许多大的相位延迟?这四个问题回答完,fc 的合理区间基本就锁定了。

最后分享一个我自己一直在用的调参套路。第一次选 fc 时,故意选得偏高一点,然后逐步往下压,每压一次就做一次阶跃响应测试和频谱对比。这样你能直观地看到“噪声变干净”和“信号变迟钝”之间是怎么此消彼长的。很多人喜欢一次到位直接选个很低的值,结果信号像拖了条尾巴,还得回头排查。耐心一点,从高到低压下来,你对自己系统的脾气会摸得特别准。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询