功能说明:一个模拟信号滤波算法演示程序,集成了 12 种常用的工业滤波算法,通过实时可视化的方式帮助工程师理解和选择适合的滤波方案。系统支持4种信号类型模拟,尽可能还原工业现场的信号干扰场景。
一、4种模拟信号类型包括:
1、正弦波 + 噪声:模拟传感器周期性测量;
2、随机噪声:测试滤波器对纯噪声的处理能力;
3、阶跃信号:模拟设备启停、负载突变;
4、脉冲干扰:模拟电磁干扰、开关噪声;
二、12种常用工业滤波算法包括:
1、限幅滤波:(LimitFilter)
算法原理: 限制两次采样值之间的最大变化量,超过阈值则使用上一次的值。
适用场景: 抑制脉冲干扰、电磁干扰;
参数: 最大允许变化幅度 (默认: 5.0);
优点:
- 简单高效;
- 对脉冲干扰抑制效果好;
缺点:
- 对缓变信号响应慢;
- 需要合理设置阈值;
2、中位值滤波:(MedianFilter)
算法原理: 连续采样 N 次,取中位值作为输出。
适用场景: 偶发脉冲干扰、异常值剔除
参数: 采样次数N (默认: 3,建议使用奇数)
优点:
- 对偶发脉冲干扰有极好的抑制效果
- 不会平滑掉信号的真实跳变
缺点:
- 计算量较大(需要排序)
- 对连续噪声效果一般
3、算术平均滤波:(AverageFilter)
算法原理:连续采样 N 次,取算术平均值。
适用场景: 周期性干扰抑制、随机噪声平滑
参数: 采样次数N (默认: 10)
优点:
- 对周期性干扰抑制效果好
- 算法简单
缺点:
- 灵敏度低,对信号突变响应慢
- 需要存储 N 个历史值
4. 递推平均滤波/滑动平均 (SlidingAverageFilter)
算法原理: 维护固定长度的队列,每次采样入队,队首出队,计算队内平均值。
数据结构: 先进先出队列(FIFO)
适用场景: 周期性干扰平滑,保持较高灵敏度
参数: 队列长度N (默认: 12)
优点:
- 相比算术平均滤波,灵敏度更高
- 计算效率高(增量更新)
缺点:
- 仍然对快速变化的信号响应有延迟
5. 中位值平均滤波 (MedianAverageFilter)
算法原理: 连续采样 N 次,去掉最大值和最小值后求平均值。
适用场景: 综合抑制脉冲干扰和随机噪声
参数: 采样次数N (默认: 10,建议 ≥ 3)
优点:
- 融合了中位值滤波和算术平均滤波的优点
- 对异常值和随机噪声都有抑制作用
缺点:
- 计算量较大(需要排序)
- 灵敏度中等
6. 限幅平均滤波 (LimitAverageFilter)
算法原理: 先进行限幅处理,再进行平均滤波,两级处理。
适用场景: 脉冲干扰 + 周期性干扰的综合场景
参数:
- 最大允许变化幅度 (默认: 3.0)
- 采样次数N (默认: 10)
优点:
- 综合抑制多种类型干扰
- 滤波效果稳定
缺点:
- 延迟较大
- 参数调整较复杂
7. 一阶滞后滤波/一阶RC低通滤波 (FirstOrderLagFilter)
算法原理: 数字化一阶 RC 低通滤波器,相当于硬件低通滤波器的数字实现。
适用场景: 变化缓慢的信号平滑、高频噪声抑制
参数: 滤波系数α (默认: 0.1,范围 0 < α < 1)
优点:
- 实现简单,计算效率高
- 内存占用小(只需一个历史值)
- 频率响应特性明确
缺点:
- 对快速变化的信号有较大延迟
- 需要根据信号频率合理选择 α
参数选择建议:
- 快速变化信号: α = 0.3 ~ 0.5
- 中等变化信号: α = 0.1 ~ 0.3
- 缓慢变化信号: α = 0.01 ~ 0.1
8. 指数平滑滤波 (ExponentialSmoothFilter)
算法原理: 使用指数衰减的权重进行平滑,与一阶滞后滤波公式相同,但应用场景不同。
适用场景: 时间序列数据的平滑和预测
参数: 平滑系数α (默认: 0.15,范围 0 < α < 1)
优点:
- 适合时间序列数据
- 对近期数据赋予更大权重
- 简单高效
缺点:
- 与一阶滞后滤波类似
9. 加权递推平均滤波 (WeightedAverageFilter)
算法原理: 对滑动窗口内的数据加权平均,新数据权重更大,提高对近期变化的灵敏度。
适用场景: 需要兼顾平滑效果和灵敏度的场景
参数:
- 队列长度N (默认: 12)
- 权重类型 (1=线性递增, 2=指数递增,默认: 1)
优点:
- 比普通滑动平均滤波更灵敏
- 仍然保持良好的平滑效果
- 权重类型可灵活选择
缺点:
- 需要预计算权重
- 计算量略高于普通滑动平均
10. 消抖滤波 (DebounceFilter)
算法原理: 信号必须在一定范围内稳定并持续一定时间后才更新输出。
适用场景: 开关量抖动消除、按键去抖
参数:
- 稳定范围阈值 (默认: 0.5)
- 稳定计数阈值 (默认: 5)
优点:
- 对开关信号抖动消除效果极佳
- 防止误触发
缺点:
- 不适合模拟量信号
- 有一定延迟
11. 卡尔曼滤波 (KalmanFilter)
算法原理: 最优估计滤波器,通过对系统模型和测量值的最优加权得到估计值。
适用场景: 高斯噪声信号的最优估计、传感器数据融合
参数:
- 过程噪声协方差Q (默认: 0.01)
- 测量噪声协方差R (默认: 0.1)
优点:
- 理论上最优的线性估计器
- 自适应能力强
- 可以平衡预测值和测量值
缺点:
- 参数调整复杂
- 需要一定的理论基础
参数调整建议:
- Q 大:相信测量值,响应快但噪声大
- R 大:相信预测值,平滑好但响应慢
12. IIR 低通滤波 (IIRLowPassFilter)
算法原理: 无限脉冲响应低通滤波器,使用双线性变换法设计,频率响应特性优异。
适用场景: 需要精确频率响应的场景、高频噪声抑制
参数:
- 截止频率比率 (默认: 0.1,范围 0-1,相对于采样率)
- 滤波器阶数 (默认: 2,可选 1 或 2)
优点:
- 频率响应特性优异
- 滤波效果精确
- 计算效率高(递归实现)
缺点:
- 稳定性需要注意
- 理论基础要求高
三、滤波器选择参考指南
| 干扰类型 | 推荐滤波器 |
| 偶发脉冲干扰 |
中位值滤波、限幅滤波 |
|
周期性干扰 |
算术平均、递推平均 |
|
高频随机噪声 |
一阶滞后、IIR低通 |
|
脉冲+噪声混合 |
中位值平均、限幅平均 |
|
需要高灵敏度 |
加权递推平均 |
|
高斯噪声信号 |
卡尔曼滤波 |
|
开关量抖动 |
消抖滤波 |
|
精确频率控制 |
IIR低通滤波 |
|
计算资源受限 |
限幅滤波、一阶滞后 |
四、软件画面

选择滤波类型
