python实现信号时域统计特征提取

1.实验数据需求

为了对采集的压力实验数据做特征工程,需要对信号进行时域的统计特征提取,包含了均值、均方根、偏度、峭度、波形因子、波峰因子、脉冲因子、峭度因子等,现用python对其进行实现。

2.python实现

其中的输入参数含义:

①data:实验数据的DataFrame

②p1:所截取实验信号的起始采样点位置

③p2:所截取实验信号的终止采样点位置

from pandas import Series
import math
pstf_list=[]
def  psfeatureTime(data,p1,p2):
    #均值
    df_mean=data[p1:p2].mean()
    #方差
    df_var=data[p1:p2].var()
    #标准差
    df_std=data[p1:p2].std()
    #均方根
    df_rms=math.sqrt(pow(df_mean,2) + pow(df_std,2))
    #偏度
    df_skew=data[p1:p2].skew()
    #峭度
    df_kurt=data[p1:p2].kurt()
    sum=0
    for i in range(p1,p2):
        sum+=math.sqrt(abs(data[i]))
    #波形因子
    df_boxing=df_rms / (abs(data[p1:p2]).mean())
    #峰值因子
    df_fengzhi=(max(data[p1:p2])) / df_rms
    #脉冲因子
    df_maichong=(max(data[p1:p2])) / (abs(data[p1:p2]).mean())
    #裕度因子
    df_yudu=(max(data[p1:p2])) / pow((sum/(p2-p1)),2)
    featuretime_list = [df_mean,df_rms,df_skew,df_kurt,df_boxing,df_fengzhi,df_maichong,df_yudu]
    return featuretime_list 

3.结果与说明

你可能感兴趣的