频域统计指标计算公式
振动信号频域分析首先需要把信号的时域波形借助离散傅里叶变换转化为频谱信息,公式如下:
式中:
x
(
k
Δ
t
)
x(k\Delta t)
x(kΔt)为振动信号的采样值;
N
N
N为采样点数;
Δ
t
\Delta t
Δt为采样间隔;
k
k
k为时域离散值的序号。
求得频谱信息后,可根据频域统计指标公式计算相应的值,公式如下:
python程序
def get_fre_domain_features(f,y):
fre_line_num = len(y)
p1 = y.mean()
p2 = math.sqrt(sum((y-p1)**2)/fre_line_num)
p3 = sum((y-p1)**3)/(fre_line_num*p2**3)
p4 = sum((y-p1)**4)/(fre_line_num*p2**4)
p5 = sum(f*y)/sum(y)
p6 = math.sqrt(sum((f-p5)**2*y)/fre_line_num)
p7 = math.sqrt(sum(f**2*y)/sum(y))
p8 = math.sqrt(sum(f**4*y)/sum(f**2*y))
p9 = sum(f**2*y)/math.sqrt(sum(y)*sum(f**4*y))
p10 = p6/p5
p11 = sum((f-p5)**3*y)/(p6**3*fre_line_num)
p12 = sum((f-p5)**4*y)/(p6**4*fre_line_num)
p13 = sum(abs(f-p5)*y)/(math.sqrt(p6)*fre_line_num)
p = [p1,p2,p3,p4,p5,p6,p7,p8,p9,p10,p11,p12,p13]
return p
补充:---------------------------------------------------------------------
程序中的f是傅里叶变换之后的频率轴,y是傅里叶变换之后的幅值,也就是平时画的频谱图的x轴和y轴。
def nextpow2(x):
if x == 0:
return 0
else:
return int(np.ceil(np.log2(x)))
def Do_fft(sig,Fs):#输入信号和采样频率
xlen = len(sig)
sig = sig - sig.mean()
NFFT = 2**nextpow2(xlen)
yf = np.fft.fft(sig,NFFT)/xlen*2
yf = abs(yf[0:int(NFFT/2+1)])
f = Fs/2*np.linspace(0,1,int(NFFT/2+1))
f = f[:]
return f,yf
#频域离散值的序号
f,y = Do_fft(sig, Fs)
p = get_fre_domain_features(f,y)
上一篇:机械振动信号15个时域统计指标