功能说明:一个模拟信号滤波算法演示程序,集成了 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低通滤波

计算资源受限

限幅滤波、一阶滞后

 

 

  四、软件画面

  

image

 

  选择滤波类型

 

image