滤波算法——二阶滤波
1. 算法原理
滤波(Wave filtering)是将信号中特定波段频率滤除的操作,是抑制和防止干扰的一项重要措施。
一阶低通滤波,又叫一阶惯性滤波,或一阶低通滤波。是使用软件编程实现普通硬件RC低通滤波器的功能。一阶低通滤波法采用本次采样值与上次滤波输出值进行加权,得到有效滤波值,使得输出对输入有反馈作用。
一阶低通滤波的算法公式为:
Y
(
n
)
=
α
X
(
n
)
+
(
1
−
α
)
Y
(
n
−
1
)
Y(n)=\alpha X(n)+(1-\alpha)Y(n-1)
Y(n)=αX(n)+(1−α)Y(n−1)其中,
α
\alpha
α是滤波系数,在
(
0
,
1
)
(0,1)
(0,1)上,
X
(
n
)
X(n)
X(n)是本次采样值,
Y
(
n
−
1
)
Y(n-1)
Y(n−1)是上次滤波输出值,
Y
(
n
)
Y(n)
Y(n)是本次滤波输出值
一阶滤波相当于将新的采样值与上次的滤波结果计算一个加权平均值。 α \alpha α的取值决定了算法的灵敏度, α \alpha α越大,新采集的值占的权重越大,算法越灵敏,但平顺性差;相反, α \alpha α越小,新采集的值占的比重越小,灵敏度差,但平顺性好。
无源一阶传递函数为
H
(
s
)
=
1
1
+
s
C
R
=
ω
0
ω
0
+
s
H(s)=\frac{1}{1+sCR}=\frac{\omega_0}{\omega_0+s}
H(s)=1+sCR1=ω0+sω0
其中
ω
0
\omega_0
ω0为特征角频率
有源一阶低通滤波器要考虑放大器增益,待补充
- 优点:对周期干扰有良好的抑制作用,适用于波动频率比较高的场合,它不用记录历史数据。
- 缺点:滞后、灵敏度低。
2. 代码实现
% LPF1o: 一阶低通滤波器函数
%
% 用法:
% xFilt = LPF1o(Tc, tor, xRaw, xFilt)
%
% 输入参数:
% - Tc: 滤波器的时间常数 (秒)
% - tor: 采样时间间隔 (秒)
% - xRaw: 未经滤波的原始输入信号
% - xFilt: 上一个时刻的滤波输出
%
% 输出参数:
% - xFilt: 经过一阶低通滤波器处理后的输出信号
function xFilt = LPF1o(Tc,tor,xRaw,xFilt)
ratio=Tc/tor;
xFilt=ratio*xRaw+(1-ratio)*xFilt;
end
在代码中调用LPF1o函数
% 需要滤波的原始信号
Z=toolVel(3,:);
datasize = length(Z(1,:));
% 设置滤波参数
tor = 0.002; % 采样时间间隔
Tc = 0.1*tor; % 滤波器时间常数
Z_filt=zeros(1,datasize);%滤波后的信号
% 逐个元素进行滤波
for i = 1:datasize
Z_filt(i) = LPF1o(Tc,tor,Z(i),Z_filt(i));
end
% 绘制原始信号和滤波后的信号
figure;
subplot(2,1,1);
plot(Z);
title('原始信号');
subplot(2,1,2);
plot(Z_filt);
title('滤波后的信号');