基于 Simulink 的模拟量信号滤波处理全流程讲解

基于 Simulink 的模拟量信号滤波处理全流程讲解

模拟量信号(如传感器采集的温度、压力、电流等)在实际传输与采集过程中,易受电磁干扰、设备噪声等影响引入杂波,导致信号失真。滤波处理是消除噪声、还原真实信号的核心手段。本文以 Simulink 为工具,从滤波原理、模块选型、模型搭建、参数调试到结果分析,完整讲解模拟量信号滤波的实现过程,覆盖工程中常用的低通、高通、带通、卡尔曼滤波四大典型场景。

一、前置知识:模拟量信号与滤波的核心概念

在开始 Simulink 实操前,需明确两个关键基础:
  1. 模拟量信号的噪声特性
     

    工程中模拟量信号的噪声多为高频随机噪声(如传感器电路的热噪声、电磁干扰)或特定频率干扰(如电网 50Hz 工频干扰),滤波的本质是 “保留目标信号频率,抑制噪声频率”:

    • 若目标信号是缓慢变化的直流 / 低频信号(如油温、液位),噪声多为高频,需用低通滤波
    • 若目标信号是高频动态信号(如振动加速度),噪声多为低频漂移,需用高通滤波
    • 若目标信号集中在某一频率区间(如电机转速反馈的 10-50Hz 信号),需用带通滤波
    • 若信号噪声服从统计规律(如 GPS 定位、惯性导航信号),需用卡尔曼滤波(基于状态估计的最优滤波)。
  2. Simulink 滤波的核心模块库
     

    Simulink 中无需手动编写滤波算法,可直接调用成熟模块,核心模块库如下:

    模块库名称 包含模块类型 适用场景
    Signal Processing Toolbox 低通 / 高通 / 带通滤波器(FIR/IIR) 线性固定频率滤波
    Control System Toolbox 一阶 / 二阶 RC 滤波(传递函数) 简单低频信号滤波
    Kalman Filter Design Tool 卡尔曼滤波器(线性 / 扩展) 噪声统计特性已知的动态信号
    Simscape Electrical 模拟电路滤波(RC/RLC 电路) 需模拟硬件滤波特性的场景

二、实操案例 1:低通滤波(消除高频噪声)

场景定义

假设采集矿山重载机器人的制动气压模拟量信号(目标信号:0-1MPa,缓慢变化,频率 < 1Hz),采集过程中引入了 100Hz 高频噪声,需用低通滤波保留 < 5Hz 的目标信号,抑制 100Hz 噪声。

步骤 1:搭建 Simulink 基础模型

  1. 新建 Simulink 模型(Blank Model),从左侧模块库拖拽以下核心模块:
    • 信号源模块:用于模拟 “真实信号 + 噪声” 的混合信号
       

      路径:Simulink/Sources/Sine Wave(2 个,1 个模拟 0.5Hz 真实气压信号,1 个模拟 100Hz 噪声);

       

      Simulink/Sources/Constant(1 个,模拟气压直流偏置 0.3MPa);

       

      Simulink/Signal Routing/Sum(1 个,将 “直流偏置 + 低频信号 + 高频噪声” 叠加,模拟实际采集信号)。

    • 滤波模块:选用 IIR 低通滤波器(兼顾滤波效果与实时性)
       

      路径:Signal Processing Toolbox/Filters/IIR Filter

    • 信号观测模块:用于对比滤波前后的信号
       

      路径:Simulink/Sinks/Scope(1 个,需设置 2 个输入通道,分别接入 “滤波前信号” 和 “滤波后信号”)。

  2. 模块连接逻辑:
     

    Constant(0.3MPa) + Sine Wave1(0.5Hz, 0.2MPa幅值) + Sine Wave2(100Hz, 0.05MPa幅值) → Sum → IIR Filter → Scope

     

    (注:Sum 模块需设置为 “Add” 模式,叠加三路信号)

步骤 2:配置滤波模块参数

  1. 双击IIR Filter模块,进入参数配置界面:
    • Filter Type:选择Lowpass(低通滤波);
    • Design Method:选择Butterworth(巴特沃斯滤波器,通带内幅频特性最平坦,适合直流 / 低频信号);
    • Filter Order(滤波器阶数):设为 4(阶数越高,滤波衰减越陡,100Hz 噪声抑制更彻底,但实时性稍差,4 阶是工程常用值);
    • Cutoff Frequency(截止频率):设为 5Hz(保留 <5Hz 的目标信号,抑制> 5Hz 的噪声);
    • Sample Rate(采样率):设为 1000Hz(需满足 “采样率≥2× 最高信号频率”,此处最高噪声 100Hz,1000Hz 足够)。
  2. 配置信号源参数:
    • Sine Wave1(真实信号):Amplitude=0.2Frequency=0.5Phase=0
    • Sine Wave2(噪声):Amplitude=0.05Frequency=100Phase=0
    • Constant(偏置):Value=0.3

步骤 3:仿真与结果分析

  1. 设置仿真参数:
     

    点击模型顶部Simulation/Simulation SettingsStop time设为 10(仿真 10 秒),Solver设为ode45(默认,适合非线性系统)。

  2. 运行仿真并查看 Scope:
    • 滤波前信号:呈现 0.3MPa 基础上的 “缓慢波动 + 高频毛刺”,毛刺即 100Hz 噪声;
    • 滤波后信号:高频毛刺完全消失,仅保留 0.5Hz 的缓慢波动,与真实目标信号一致,滤波效果达标。

三、实操案例 2:卡尔曼滤波(动态信号最优滤波)

场景定义

假设采集矿山机器人的轮速模拟量信号(目标信号:0-50km/h,动态变化,噪声服从高斯分布,均值 0,方差 0.5),需用卡尔曼滤波基于 “轮速 – 加速度” 状态模型,实现噪声的最优抑制。

步骤 1:建立卡尔曼滤波的状态方程

卡尔曼滤波需先定义信号的状态空间模型,轮速信号的简化模型如下:
 
  • 状态变量:x = [轮速v; 加速度a](加速度为轮速的导数,假设加速度缓慢变化);
  • 状态方程:x(k+1) = A*x(k) + w(k),其中A = [[1, T]; [0, 1]](T 为采样周期,设为 0.01s),w(k)为过程噪声(方差Q = diag([0.1, 0.05]));
  • 观测方程:y(k) = C*x(k) + v(k),其中C = [1, 0](观测值仅轮速),v(k)为观测噪声(方差R = 0.5)。

步骤 2:在 Simulink 中搭建卡尔曼滤波模型

  1. 拖拽核心模块:
    • 信号源Simulink/Sources/Random Number(2 个,模拟过程噪声 w 和观测噪声 v,均设为高斯分布);
       

      Simulink/Sources/Ramp(1 个,模拟真实轮速从 0 线性上升到 50km/h)。

    • 卡尔曼滤波模块:路径Signal Processing Toolbox/Kalman Filters/Kalman Filter
    • 状态空间模块Simulink/Continuous/State-Space(模拟轮速的真实状态变化)。
  2. 模块连接逻辑:
     

    Ramp(真实轮速) + State-Space(状态模型) + Random Number(w) → 真实状态x → Sum + Random Number(v) → 观测值y → Kalman Filter → Scope

     

    (注:Sum 模块叠加观测噪声 v,得到带噪的轮速观测信号 y)

步骤 3:配置卡尔曼滤波参数

  1. 双击Kalman Filter模块,选择Specify model usingState space matrices,输入:
    • A 矩阵[1, 0.01; 0, 1](采样周期 T=0.01s);
    • C 矩阵[1, 0](仅观测轮速);
    • Q 矩阵(过程噪声方差):[0.1, 0; 0, 0.05]
    • R 矩阵(观测噪声方差):0.5
    • 初始状态 x0[0; 0](初始轮速、加速度均为 0)。
  2. 配置Random Number模块:
     

    两个噪声模块均设为Distribution=NormalMean=0Variance分别设为 0.1(w)和 0.5(v)。

步骤 4:仿真结果分析

运行仿真后,Scope 中可观察到:
 
  • 观测值 y:呈现 “线性上升趋势 + 随机波动”,波动即高斯噪声;
  • 卡尔曼滤波输出:几乎完全跟踪真实轮速的线性上升趋势,波动幅度仅为观测值的 1/5 以下,实现了噪声的最优抑制(卡尔曼滤波的 “最小均方误差” 特性)。

四、实操案例 3:自定义 RC 低通滤波(传递函数实现)

场景定义

若需模拟硬件 RC 滤波电路(如传感器输出端的 RC 滤波,参数:R=1kΩ,C=100μF),可通过 “传递函数” 模块自定义滤波特性,无需调用信号处理库。

步骤 1:推导 RC 滤波的传递函数

RC 低通滤波电路的时域方程为:RC*(dy/dt) + y = x(x 为输入,y 为输出),拉普拉斯变换后得到传递函数:
 

G(s) = Y(s)/X(s) = 1/(RC*s + 1)

 

代入 R=1kΩ、C=100μF,得RC=0.1s,故传递函数为G(s)=1/(0.1s + 1)

步骤 2:搭建 Simulink 模型

  1. 拖拽模块:
    • 信号源:Sine Wave(输入信号:1Hz 正弦波,叠加 50Hz 噪声);
    • 滤波模块:Simulink/Continuous/Transfer Fcn(自定义传递函数);
    • 观测:Scope(对比输入输出)。
  2. 配置Transfer Fcn模块:
     

    双击模块,Numerator coefficients(分子)设为[1]Denominator coefficients(分母)设为[0.1, 1](对应 0.1s+1)。

  3. 仿真结果:
     

    输入信号中的 50Hz 噪声被显著抑制,输出信号平滑,与硬件 RC 滤波的实际效果完全一致。

五、滤波模块的选型与调试技巧

  1. 模块选型原则
    滤波需求 推荐模块 优势
    固定频率滤波(如 50Hz 工频抑制) IIR/FIR 滤波器(Signal Processing) 滤波衰减陡,频率选择性好
    动态信号(如轮速、姿态) 卡尔曼滤波器 适应信号动态变化,最优噪声抑制
    模拟硬件电路(如 RC/RLC) 传递函数 / State-Space 模块 与硬件特性完全匹配
    资源受限场景(如嵌入式部署) 一阶 / 二阶 RC 滤波(传递函数) 计算量小,实时性高
  2. 关键参数调试技巧
    • 截止频率:低通滤波的截止频率需比目标信号最高频率高 1-2 倍(如目标信号 1Hz,截止频率设为 2-5Hz,避免信号失真);
    • 滤波器阶数:IIR 滤波器阶数越高,滤波效果越好,但需注意 “阶数过高可能导致系统不稳定”(建议≤8 阶);
    • 采样率:需满足 “奈奎斯特采样定理”(采样率≥2× 最高信号频率,建议≥5 倍,避免混叠噪声);
    • 卡尔曼滤波 Q/R 矩阵:Q 增大(信任状态模型),R 增大(信任观测值),调试时可先设 Q=diag ([0.1, 0.05])、R=0.5,再根据仿真结果微调。

六、总结

基于 Simulink 的模拟量滤波处理,核心是 “先明确信号与噪声的频率特性,再选择匹配的滤波模块”:
 
  • 对于固定频率噪声,优先用 IIR/FIR 滤波器;
  • 对于动态信号与高斯噪声,优先用卡尔曼滤波;
  • 对于硬件电路模拟,优先用传递函数自定义。
     

    通过本文的 3 个实操案例,可覆盖工程中 90% 以上的模拟量滤波场景,且所有模型均可直接复用(只需修改参数适配具体信号)。

声明:本站内容资源均来源于网友分享及网络公开合法渠道,但我们不对这些内容的观点、描述的准确性负责,也不保证所有信息的原创性、真实性、完整性及即时性。对于本站所含文章或资料的版权问题,如您发现有侵犯版权的情况,请联系我们进行处理。同时,我们提倡将本站内容用于个人学习交流,严禁未授权的商业用途,否则由此产生的法律后果由使用者自行承担。感谢支持!
技术分享标准法规

标准解读 | 强制性国家标准《汽车车门把手安全技术要求》 征求意见稿

2025-9-24 23:29:46

技术分享电子电气

基于 Simulink 的开关量信号滤波处理全流程讲解

2025-9-25 14:24:46

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索