以前我们梳理过常用的有量纲时域特征指标无量纲时域特征指标,其实特征提取方法中,一些频谱特征指标也是十分有用的。

下述频域特征指标是根据信号的功率谱求得的。在故障诊断或者其他应用场景下,可以与时域指标以及其他指标一同作为特征向量的一部分,丰富特征量种类,提升诊断正确率。

1.理论介绍

1.0.功率谱

功率谱的相关介绍在之前讲到过:

Mr.看海:信号频域分析方法的理解(频谱、能量谱、功率谱、倒频谱、小波分析)

下述频域特征都是在功率谱基础上计算求得的,但是为什么不用频谱呢?个人认为是因为功率谱在表达功率信号乃至随机信号频域特征时更具有普适性,毕竟功率信号就不能用频谱表示。

1.1.重心频率

重心频率能够描述信号在频谱中分量较大的信号成分的频率,反映信号功率谱的分布情况。换句话说,对于给定的频带范围,低于重心频率的频率范围内包含的能量是信号总能量的一半。

另一种理解方式,重心频率是以功率谱的幅值为权值的加权平均,所以重心频率会向功率谱幅值更大(即权值更大)的位置移动。

更形象一点,如果把下图中功率谱曲线围起来的区域看作一块木板,那么当把这块木板放在重心频率虚线所在的钢丝上时,木板刚好能保持平衡。

低频幅值较大时,重心距离原点较近

1.2.均方根频率

均方根频率就是均方频率的算数平方根,它也有一个辅助理解的物理含义:如果把下图中功率谱曲线围起来的区域看作一块木板,那么当这块木板围绕y轴旋转时,均方根频率所在位置到原点的距离就是旋转体的惯性半径(指物体质量假设的集中点到转动轴间的距离)。

均方根频率可以看做惯性半径

1.3.均方频率

均方频率是均方根频率的平方。

与重心频率不同,均方频率是信号频率平方的加权平均,同样以功率谱的幅值为权。

重心频率、均方频率、均方根频率都是描述功率谱主频带位置分布的。

1.4.频率标准差

频率标准差是重心频率为中心的惯性半径。若重心附近的频谱幅值较大,则频率标准差较小;若重心附近的频谱较小,则频率标准差较大。 频率标准差描述功率谱能量分布的分散程度。

频率标准差表示功率谱能量分布的分散程度

1.5.频率方差

频率方差就是频率标准差的平方,是衡量功率谱能量分散程度的另一个度量维度。就不过多描述了。

频率标准差和频率方差都是描述功率谱能量集中/分散程度的。

2.MATLAB代码实现

 笔者最近在做这样一件事情。由于搞科研写论文时,对特征提取的需要往往是集中性的、多种类的、需求各异的,所以我把之前介绍过的这些特征值:

有量纲特征值8个——最大值、最小值、峰峰值、均值、方差、标准差、均方值、均方根值(RMS)
无量纲特征值6个——峭度、偏度、波形因子、峰值因子、脉冲因子、裕度因子
频域特征值5个——重心频率、均方频率、均方根频率、频率方差、频率标准差
信息熵特征值3个——功率谱熵、奇异谱熵、能量熵
(其他相关特征若干——样本熵等熵特征值、后续还会补充其他常用、不常用的特征指标)

以上22种全都集中到一个封装函数里,实现一行代码完成特征提取。

比如提取数据“功率谱熵”就可以像这样写:

fea = genFeature(data,{'psdE'}) %对data数据求功率谱熵

如果提取数据“最大值、最小值、峰峰值、均值、方差、标准差、均方值...”这全部22种特征,就可以这样写:

fea =genFeature(data,{'max','min','mean','peak','arv','var','std','kurtosis',...
               'skewness','rms','waveformF','peakF','impulseF','clearanceF',...
               'FC','MSF','RMSF','VF','RVF',...
               'psdE','svdpE','eE'};  %调用genFeature函数,完成特征提取,算出的特征值会保存在fea变量里

也就是说需要提取哪个特征,在函数中直接指定就可以了。输出的fea变量里就会得到相应的这些特征值,顺序也是与输入的排序保持一致的。

这个函数的介绍如下:

function fea = genFeature(data,fs,featureNamesCell,options)
% 时域、频域、熵相关算法的信号特征提取函数
% 输入:
% data:待特征提取的时域信号,可以是二维数据,维度为m*n,其中m为数据组数,n为每组数据的长度。即每行数据为一组。行列方向不可出错
% fs:采样频率,如果不提取频域特征,fs值可以设置为1
% options:其他设置,使用结构体的方式导入。目前可设置变量为svdpEn,即奇异值的窗口长度。如果不提取svdpE特征,此值可以不设置
% featureNamesCell:拟进行特征提取的特征名称,该变量为cell类型,其中包含的特征名称为字符串,特征名称需要在下边列表中:
% 目前支持的特征(2021.11.6,共22种):
% max :最大值
% min :最小值
% mean :平均值
% peak :峰峰值
% arv  :整流平均值
% var  :方差
% std  :标准差
% kurtosis  :峭度
% skewness  :偏度
% rms       :均方根
% waveformF :波形因子
% peakF     :峰值因子
% impulseF  :脉冲因子
% clearanceF:裕度因子
% FC:重心频率
% MSF:均方频率
% RMSF:均方根频率
% VF:频率方差
% RVF:频率标准差
% psdE:功率谱熵
% svdpE:奇异谱熵
% eE:能量熵
% 
% 输出:
% fea:数据data的特征值数组,其特征值顺序与featureNamesCell一一对应

需要上边这个函数文件以及测试代码的同学,可以在下述链接中获取:

特征提取(时域、频域指标) | 工具箱文档

这个函数会持续更新,有哪些想要加进去的特征指标,同学们可以在评论区留言,笔者会考虑纳入到这个“特征提取指标全家桶”中。

附录:

1.重心频率公式

FC=\frac{\int_{0}^{+\infty}fP(f)df}{\int_{0}^{+\infty}P(f)df}

式中P(f)为信号的功率谱。

2.均方频率公式

MSF=\frac{\int_{0}^{+\infty}f^{2}P(f)df}{\int_{0}^{+\infty}P(f)df}

3.均方根频率

RMSF=\sqrt{MSF}

4.频率方差

VF=\frac{\int_{0}^{+\infty}(f-FC)^{2}P(f)df}{\int_{0}^{+\infty}P(f)df}

5.频率标准差

RVF=\sqrt{VF}

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐