波动数据的特征值提取

在试验中,类似位移、声压、声音之类的数据,数据值会有正有负,并且波动强烈,位移数据本身也常常用于振动信号的分析。怎样提取数据更加合理可靠呢?

比如某个试验中的位移信号,如下所示:

image-20211017104337223

如果按照低通滤波(单纯的平滑滤波),那么所得结果就会是上图的蓝线所示。

相比原始数据(灰线),一方面丢失了高频信息,另一方面也丢失了原本的波动信息(变化情况)。

在数据处理过程中,先后考虑用以下方案进行提取:

简单特征值

分成小节后,每节提取 max、min、mean 值。

针对本试验来说:

  • max 或 min 值的走向,更接近包络线,更能贴近数据的变化
  • 而 mean 值,很可能会像蓝线一样几乎为0。

统计特征值

不能简单地带入到计算之中,而是应该类似振动信息的特征提取进行计算,比如:

  • 峭度(有的地方也叫峰度),英文是 Kurtosis,正态分布为3,越大,越陡峭
    • 公式:$K=\frac{\frac{1}{n}\Sigma_{i=1}^n(x-\bar x)^4}{(\frac{1}{n}\Sigma_{i=1}^n(x-\bar x)^2)^2}=\frac{\mu^4}{\sigma^4}$
    • pandas.series.kurt() 可计算,发现 pandas 还有 kurtosis 一函数,从官网描述看,其差距不明;多用 kurt
    • stats.kurtosis(data) 可计算
    • R_ku = np.mean((R - R_mean) ** 4) / pow(R_var, 2) 计算峰度,衡量实数随机变量概率分布的峰态
  • 偏度(skewness),有的也叫峰度因子
    • 公式: $S_k=\frac{\frac{1}{n}\Sigma_{i=1}^n(x-\bar x)^3}{(\frac{1}{n}\Sigma_{i=1}^n(x-\bar x)^2)^{\frac{3}{2}}}=\frac{\mu^3}{\sigma^3}$
    • pandas.series.skew() 可计算
    • stats.skew(data) 可计算
    • R_sc = np.mean((R - R_mean) ** 3) 计算偏斜度,三阶矩,描述数据的偏斜程度

参考:

  1. 振动信号常用的时域和频域指标
  2. 峰度与偏度(python)
  3. Pandas之skew,求偏度
  4. 偏斜度与峰度计算 python 与 numpy 实现
  5. 峰值因子、峭度因子、脉冲因子、裕度因子的物理意义?
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2020-2022 Sun Yue

请我喝杯咖啡吧~

支付宝
微信