目录
Toggle基于 Simulink 的模拟量信号滤波处理全流程讲解
一、前置知识:模拟量信号与滤波的核心概念
-
模拟量信号的噪声特性
工程中模拟量信号的噪声多为高频随机噪声(如传感器电路的热噪声、电磁干扰)或特定频率干扰(如电网 50Hz 工频干扰),滤波的本质是 “保留目标信号频率,抑制噪声频率”:
- 若目标信号是缓慢变化的直流 / 低频信号(如油温、液位),噪声多为高频,需用低通滤波;
- 若目标信号是高频动态信号(如振动加速度),噪声多为低频漂移,需用高通滤波;
- 若目标信号集中在某一频率区间(如电机转速反馈的 10-50Hz 信号),需用带通滤波;
- 若信号噪声服从统计规律(如 GPS 定位、惯性导航信号),需用卡尔曼滤波(基于状态估计的最优滤波)。
-
Simulink 滤波的核心模块库
Simulink 中无需手动编写滤波算法,可直接调用成熟模块,核心模块库如下:
模块库名称 包含模块类型 适用场景 Signal Processing Toolbox 低通 / 高通 / 带通滤波器(FIR/IIR) 线性固定频率滤波 Control System Toolbox 一阶 / 二阶 RC 滤波(传递函数) 简单低频信号滤波 Kalman Filter Design Tool 卡尔曼滤波器(线性 / 扩展) 噪声统计特性已知的动态信号 Simscape Electrical 模拟电路滤波(RC/RLC 电路) 需模拟硬件滤波特性的场景
二、实操案例 1:低通滤波(消除高频噪声)
场景定义
步骤 1:搭建 Simulink 基础模型
-
新建 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 个输入通道,分别接入 “滤波前信号” 和 “滤波后信号”)。
- 信号源模块:用于模拟 “真实信号 + 噪声” 的混合信号
-
模块连接逻辑:
Constant(0.3MPa) + Sine Wave1(0.5Hz, 0.2MPa幅值) + Sine Wave2(100Hz, 0.05MPa幅值) → Sum → IIR Filter → Scope
(注:Sum 模块需设置为 “Add” 模式,叠加三路信号)
步骤 2:配置滤波模块参数
-
双击
IIR Filter
模块,进入参数配置界面:- Filter Type:选择
Lowpass
(低通滤波); - Design Method:选择
Butterworth
(巴特沃斯滤波器,通带内幅频特性最平坦,适合直流 / 低频信号); - Filter Order(滤波器阶数):设为 4(阶数越高,滤波衰减越陡,100Hz 噪声抑制更彻底,但实时性稍差,4 阶是工程常用值);
- Cutoff Frequency(截止频率):设为 5Hz(保留 <5Hz 的目标信号,抑制> 5Hz 的噪声);
- Sample Rate(采样率):设为 1000Hz(需满足 “采样率≥2× 最高信号频率”,此处最高噪声 100Hz,1000Hz 足够)。
- Filter Type:选择
-
配置信号源参数:
Sine Wave1
(真实信号):Amplitude=0.2
,Frequency=0.5
,Phase=0
;Sine Wave2
(噪声):Amplitude=0.05
,Frequency=100
,Phase=0
;Constant
(偏置):Value=0.3
。
步骤 3:仿真与结果分析
-
设置仿真参数:
点击模型顶部
Simulation/Simulation Settings
,Stop time
设为 10(仿真 10 秒),Solver
设为ode45
(默认,适合非线性系统)。 -
运行仿真并查看 Scope:
- 滤波前信号:呈现 0.3MPa 基础上的 “缓慢波动 + 高频毛刺”,毛刺即 100Hz 噪声;
- 滤波后信号:高频毛刺完全消失,仅保留 0.5Hz 的缓慢波动,与真实目标信号一致,滤波效果达标。
三、实操案例 2:卡尔曼滤波(动态信号最优滤波)
场景定义
步骤 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 中搭建卡尔曼滤波模型
-
拖拽核心模块:
- 信号源:
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
(模拟轮速的真实状态变化)。
- 信号源:
-
模块连接逻辑:
Ramp(真实轮速) + State-Space(状态模型) + Random Number(w) → 真实状态x → Sum + Random Number(v) → 观测值y → Kalman Filter → Scope
(注:Sum 模块叠加观测噪声 v,得到带噪的轮速观测信号 y)
步骤 3:配置卡尔曼滤波参数
-
双击
Kalman Filter
模块,选择Specify model using
为State 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)。
- A 矩阵:
-
配置
Random Number
模块:两个噪声模块均设为
Distribution=Normal
,Mean=0
,Variance
分别设为 0.1(w)和 0.5(v)。
步骤 4:仿真结果分析
- 观测值 y:呈现 “线性上升趋势 + 随机波动”,波动即高斯噪声;
- 卡尔曼滤波输出:几乎完全跟踪真实轮速的线性上升趋势,波动幅度仅为观测值的 1/5 以下,实现了噪声的最优抑制(卡尔曼滤波的 “最小均方误差” 特性)。
四、实操案例 3:自定义 RC 低通滤波(传递函数实现)
场景定义
步骤 1:推导 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 模型
-
拖拽模块:
- 信号源:
Sine Wave
(输入信号:1Hz 正弦波,叠加 50Hz 噪声); - 滤波模块:
Simulink/Continuous/Transfer Fcn
(自定义传递函数); - 观测:
Scope
(对比输入输出)。
- 信号源:
-
配置
Transfer Fcn
模块:双击模块,
Numerator coefficients
(分子)设为[1]
,Denominator coefficients
(分母)设为[0.1, 1]
(对应 0.1s+1)。 -
仿真结果:
输入信号中的 50Hz 噪声被显著抑制,输出信号平滑,与硬件 RC 滤波的实际效果完全一致。
五、滤波模块的选型与调试技巧
-
模块选型原则
滤波需求 推荐模块 优势 固定频率滤波(如 50Hz 工频抑制) IIR/FIR 滤波器(Signal Processing) 滤波衰减陡,频率选择性好 动态信号(如轮速、姿态) 卡尔曼滤波器 适应信号动态变化,最优噪声抑制 模拟硬件电路(如 RC/RLC) 传递函数 / State-Space 模块 与硬件特性完全匹配 资源受限场景(如嵌入式部署) 一阶 / 二阶 RC 滤波(传递函数) 计算量小,实时性高 -
关键参数调试技巧
- 截止频率:低通滤波的截止频率需比目标信号最高频率高 1-2 倍(如目标信号 1Hz,截止频率设为 2-5Hz,避免信号失真);
- 滤波器阶数:IIR 滤波器阶数越高,滤波效果越好,但需注意 “阶数过高可能导致系统不稳定”(建议≤8 阶);
- 采样率:需满足 “奈奎斯特采样定理”(采样率≥2× 最高信号频率,建议≥5 倍,避免混叠噪声);
- 卡尔曼滤波 Q/R 矩阵:Q 增大(信任状态模型),R 增大(信任观测值),调试时可先设 Q=diag ([0.1, 0.05])、R=0.5,再根据仿真结果微调。
六、总结
- 对于固定频率噪声,优先用 IIR/FIR 滤波器;
- 对于动态信号与高斯噪声,优先用卡尔曼滤波;
- 对于硬件电路模拟,优先用传递函数自定义。
通过本文的 3 个实操案例,可覆盖工程中 90% 以上的模拟量滤波场景,且所有模型均可直接复用(只需修改参数适配具体信号)。