查看原文
其他

振动信号的预处理:去趋势项和五点三次平滑法

2016-07-10 声振之家


1、去趋势项(detrending)

在振动测试中采集到的振动信号数据,由于放大器随温度变化产生的零点漂移、传感器频率范围外低频性能的不稳定以及传感器周围的环境干扰等,往往会偏离基线,甚至偏离基线的大小还会随时间变化。偏离基线随时间变化的整个过程被称为信号的趋势项。趋势项直接影响信号的正确性,应该将其去除。常用的消除趋势项的方法是多项式最小二乘法。


在MATLAB中提供detrend()函数进行去趋势项操作,但只能去除均值和线性趋势项,所以如果使用该函数进行操作,即承认传感器所含趋势项是线性的。如果认为趋势项是非线性的,则需要用polyfit()和ployval()组成的函数进行操作(如:Liu_detrend(t,y,m))。在实际振动信号数据处理中,通常取1~3次多项式来对采样数据进行多项式趋势项消除的处理。

function y2 = Liu_detrend(t,y,m)

temp = polyfit(t,y,m); 

%t为时间序列,y为信号,m为拟合多项式的次 

y2 = y - polyval(temp,t);

2、五点三次平滑法

设已知n个等距点x0 < x1 < ... < xn-1上的观测数据为y0, y1,..., yn-1,则可在每个数据点前面各区2个相邻的点,用三次多项式:


进行逼近。根据最小而成原理确定系数a0,a1,a2,a3,最后可得到五点三次平滑公式如下:

一般的数据序列都远远多于5个,对于开始2点和最后2点分别由式(1)、式(2)和式(4)、式(5)进行平滑,其余采样点数据有式(3)进行平滑处理。


五点三次平滑法可以用作时域和频域信号平滑处理。该处理方法对于时域数据的作用主要是能减少混入振动信号中的高频随机噪声。而对于频域数据的作用则是能使谱曲线变得光滑,以便在模态参数识别中得到较好的拟合效果。需要注意的一点是频域数据经过五点三次平滑法会使得谱曲线中的峰值降低,体形变宽,可能造成识别参数的误差增大。因此,平滑次数不宜过多。下面给出的是其MATLAB实现程序:

function b = Liu_smoothing(a,m)

n = length(a);

for k=1:m

b(1)=(69*a(1)+4*(a(2)+a(4))-6*a(3)-a(5))/70; b(2)=(2*(a(1)+a(5))+27*a(2)+12*a(3)-8*a(4))/35;

for j=3:n-2

b(j)=(-3*(a(j-2)+a(j+2))+12*(a(j-1)+a(j+1))+17*a(j))/35; 

end


b(n-1)=(2*(a(n)+a(n-4))+27*a(n-1)+12*a(n-2)-8*a(n-3))/35; b(n)=(69*a(n)+4*(a(n-1)+a(n-3))-6*a(n-2)-a(n-4))/70; 

a=b; 

end

3、实例1


图1

  • 对比Figure3和Figure4,可以看出:在趋势项为非线性时,detrend()的作用有限。 

  • 对比Figure3和Figure5,可以看出:在趋势项为非线性时,Liu_detred(t,y,2)可以很好的进行去趋势项。

4、实例2


图2

  • 对比Figure1和Figure2,可以看出:在趋势项为线性时,使用detrend()和Liu_detrend(t,y,1)是没有区别的。

  • 对比Figure2和Figure3,可以看出:经五点三次平滑法后,明显减少了混入振动信号中的高频随机噪声。

5、结论

一般来讲,使用detrend()进行去趋势项即可,即认为传感器的零点漂移是线性变化的(如图3)。然后进行五点三次平滑。将原始数据经此两处理过程(预处理)后,再进行后续的数据处理工作是有必要的。


图3:某传感器随温度变化的零点漂移图

本文根据道客巴巴《振动信号的预处理方法》一文整理而成,作者不详。

关联阅读:
A振动信号的采集与预处理需要注意的几个问题
B振动信号预处理的几个问题:滤波、积分、泄漏等
C旋转机械振动测试:水泵的振动数据采集与预处理
D数据处理名词术语中英文对照,一网打尽


声明:本微信转载文章出于非商业性的教育和科研目的,并不意味着赞同其观点或证实其内容的真实性。版权归原作者所有,如转载稿涉及版权等问题,请立即联系我们,我们会予以更改或删除相关文章,保证您的权利!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存