def psfeatureTime(data):
#均值
df_mean=data.mean()
df_var=data.var()
df_std=data.std()
#均方根
df_rms=np.sqrt(pow(df_mean,2) + pow(df_std,2))
#峰峰值
fengfengzhi = max(data)-min(data)
#偏度
df_skew=pd.Series(data).skew()
#峰度
df_kurt=pd.Series(data).kurt()
sum=0
for i in range(len(data)):
sum+=np.sqrt(abs(data[i]))
#波形因子
df_boxing=df_rms / (abs(data).mean())
#峰值因子
df_fengzhi=(max(data)) / df_rms
#脉冲因子
df_maichong=(max(data)) / (abs(data).mean())
#裕度因子
df_yudu=max(data)/ pow(sum/(len(data)),2)
#峭度
df_qiaodu =(np.sum([x**4 for x in data])/len(data)) / pow(df_rms,4)
featuretime_list = [round(df_rms,3),round(fengfengzhi,3),round(df_fengzhi,3),round(df_boxing,3),round(df_maichong,3),round(df_yudu,3),round(df_qiaodu,3)]
return featuretime_list
if __name__ == '__main__':
p1 = psfeatureTime(records1)
p1
def get_rms(records):
"""均方根值 反映的是有效值而不是平均值 """
root_mean = math.sqrt(sum([x ** 2 for x in records]) / len(records))
"""峰峰值"""
peak_to_peak = max(records)-min(records)
"""峰值指标"""
crest_factor = max(records)/root_mean
"""波形指标"""
shape_factor = root_mean/abs(sum([x for x in records]) / len(records))
"""脉冲指标"""
impulse_factor = max(records)/abs(sum([x for x in records]) / len(records))
"""裕度指标"""
clarance = max(records)/pow(abs((sum(sqrt([abs(x) for x in records]))/len(records))),2)
"""峭度指标"""
kur = (sum([x**4 for x in records])/len(records))/pow(root_mean,4)
pstf = [round(root_mean,3),round(peak_to_peak,3),round(crest_factor,3),round(shape_factor,3),round(impulse_factor,3),round(clarance,3),round(kur,3)]
return pstf
if __name__ == '__main__':
records1 = [1, 2, 3, 4, 5, 6]
records2 = [2, 4, 6]
# 均方根
rms1 = get_rms(records1) # 4.08
rms2 = get_rms(records2) # 4.32
rms1