@ 去趋势项
@ 五点三次平滑法
1,去趋势项(detrending)
在振动测试中采集到的振动信号数据,由于放大器随温度变化产生的零点漂移、传感器频率范围外低频性能的不稳定以及传感器周围的环境干扰等,往往会偏离基线,甚至偏离基线的大小还会随时间变化。偏离基线随时间变化的整个过程被称为信号的趋势项。趋势项直接影响信号的正确性,应该将其去除。常用的消除趋势项的方法是多项式最小二乘法。
在MATLAB中提供detrend()函数进行去趋势项操作,但只能去除均值和线性趋势项,所以如果使用该函数进行操作,即承认传感器所含趋势项是线性的。如果认为趋势项是非线性的,则需要用polyfit()和ployval()组成的函数进行操作(如iu_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,五点三次平滑法(cubical smoothingalgorithm with five-point approximation)
五点三次平滑法可以用作时域和频域信号平滑处理。该处理方法对于时域数据的作用主要是能减少混入振动信号中的高频随机噪声。而对于频域数据的作用则是能使谱曲线变得光滑,以便在模态参数识别中得到较好的拟合效果。需要注意的一点是频域数据经过五点三次平滑法会使得谱曲线中的峰值降低,体形变宽,可能造成识别参数的误差增大。因此,平滑次数不宜过多。下面给出的是其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()的作用有限。
2)对比Figure3和Figure5,可以看出:在趋势项为非线性时,Liu_detrend(t,y,2)可以很好的进行去趋势项。
4,实例2
1)对比Figure1和Figure2,可以看出:在趋势项为线性时,使用detrend()和Liu_detrend(t,y,1)是没有区别的。
2)对比Figure2和Figure3,可以看出:经五点三次平滑法后,明显减少了混入振动信号中的高频随机噪声。
5,结论
一般来讲,使用detrend()进行去趋势项即可,即认为传感器的零点漂移是线性变化的。然后进行五点三次平滑。将原始数据经此两处理过程(预处理)后,再进行后续的数据处理工作是有必要的。
|