首页/文章/ 详情

机械故障诊断基础学习 | 一文读懂傅里叶级数和傅里叶变换,采样定理以及FFT

2月前浏览1590

 

背景及摘要

很多初学者刚接触故障诊断可能觉得很简单,套用深度学习模型进行训练,分类准确率很容易就达到99%。但是在工作或者在解决实际问题时,深度学习方法几乎是用不上(至少目前是这样)。  
最近在读时献江老师等人的《机械故障诊断及典型案例解析》这本书时,发现其内容真的很丰富,故障诊断方法讲解的详细全面,且有实际丰富的案例,更加容易消化理解各方法特点及其应用场景。  
这期给大家分享时域信号是如何转换到频域中的,在实际应用中又是如何将离散信号转换成频谱的。通过阅读本文,你将会学到傅里叶级数、傅里叶变换、采样定理等知识,还会了解到什么是频率混叠、频率泄露、栅栏效应。  


参考资料:

书籍:机械故障诊断及典型案例解析(第2版,时献江)


       
目录
     

1. 傅里叶级数

    1.1 傅里叶级数原理及典型信号频谱特点

2. 典型信号的傅里叶变换

    2.1 单位脉冲信号(        函数)

    2.1 周期单位脉冲信号(梳妆        函数

3. 信号的采样

    3.1 连续信号的采样

    3.2 采样定理

    3.3 采样点数和频率分辨率

4. 离散傅里叶变换(DFT)

    4.1 DFT的理论公式及计算过程

5. 快速傅里叶变换(FFT)

    5.1 FFT方法提出背景

    5.2 FFT计算案例

摘要

随机信号的时域分析只能提供有限的时域特征信息,若想进行信号的精密分析与诊断,需要更进一步的频谱分析。因为故障发生时往往会引起信号频率成分的变化,而且很多故障特征频率也是可以计算,通过监测该频率的幅值变换规律,就可以监控故障的发展过程。
频谱分析的理论基础是傅里叶变换,傅里叶变换包括傅里叶级数和傅里叶积分。本章主要介绍傅里叶级数及典型信号的傅里叶变换、采样定理以及DFT的过程。

         

通过阅读本文将了解到(或带着以下疑问去阅读)          
       
  • 频域是什么,频域包含哪些信息?
  • 时域是怎么转换到频域的,时域转换到频域的原理是什么?
  • 连续信号转换到离散信号有什么要注意的吗?            
  • FT、DFT、FFT之间是什么关系?
  • 时间分辨率和频率分辨率之间的关系?
  • 直流分量是什么,会有什么影响?            

     

     
       
     

1、傅里叶级数

1.1 傅里叶级数原理及典型信号频谱特点

(1) 基本原理

给定一个周期函数          ,在一定条件下,可以根据如下公式展成傅里叶级数。

          (1)

式中          ——基频,Hz,          

          ——周期,s。

系数          和          用下面的公式进行计算 ,即:              

          (2)

          (3)

          (4)

式中,            是            的均值,称为直流分量,          ,          为交流分量,也称谐波分量。

在数学上,傅里叶级数的概念任何一个周期函数都可以用无限个三角函数去拟合。在信号处理领域的物理意义为:对任何一个周期信号都可以分解成直流成分和无限个不能再分解的简谐信号(谐波分量)的叠加,或称任意周期信号中包括的频率成分如式(2)和式(3)所示。工程信号处理的一个主要任务就是分析和处理复杂信号中所包含的频率成分,这可以由傅里叶变换来完成。
利用和差化积公式,我们可以得到更简洁的傅里叶级数表达式:

            (5)

于是,幅值          和相位          ,可分别表示为:

                   (6)

            (7)

式中,                    

也可以采用复数描述傅里叶级数,根据欧拉公式有:

                             (8)

            (9)

代入式 (1) 式变为:        

            

即:        

            (10)


式中,          。

此时出现了负频率,这是由于用复数表示          ,          函数的结果。

下面求系数          :

          

可见 ,          是一个复数量。由于          本身可以表示信号的幅值和相位,所以          称为有限区间          上信号          的离散频谱。              

其中,          称为幅值谱,为复数谱的幅值,为实谱幅值          的一半;,          称为相位谱

(2) 周期信号傅里叶级数谱的特点

根据式 (5) 可以绘出傅里叶级数的幅值谱图如图1所示。可见,周期信号的频谱是离散的每条谱线只出现在基波频率的整倍数上,不存在非整倍数的频率分量,随着谐波次数的增加,谐波幅值是逐渐下降的。根据这些特征,很容易在频域内判别信号是周期还是非周期的。

图1 傅里叶级数的幅值谱图

例如,图2(c)中的两个周期信号的频率分别为2Hz和3Hz, 其合成显然为周期信号,且基频为1Hz 。图2(d)为其计算频谱图,并没有图1的特征,其实,此时如果认为基频幅值为零,其仍然具有周期函数的主要频谱特征。另外,也可对图3(c)中的合成信号进行频谱分析,结果如图3(d)所示,显然图中两个信号频率不成比例关系,虽然其时域波形很像周期信号,但是其谱特征为非周期信号(实际为准周期信号)。

图2 两个正弦信号的叠加(有公共周期)

图3 两个正弦信号的叠加(无公共周期)

(3) 典型信号的傅里叶级数谱

傅里叶级数的典型例子是方波信号[见图4(a)],方波的傅里叶级数表达式为:              

          

图4 方波及其频谱

方波的频谱特点是只有奇次谐波。根据方波信号的频谱图4(b) ,也很容易判断其为周期信号。

2、典型信号的傅里叶变换

2.1 单位脉冲信号 (            函数)        

(1)            函数的定义

           (11)

如图5(b)所示,            函数可以看作是图5(a)所示的矩形函数当            的极限。      

图5 单位脉冲函数

(2)             函数的性质

          函数的筛选性质

a. 任何一函数          与          相乘的积分值等于此函数在零点的函数值          。

          

b. 任一函数            与具有时移            的单位脉冲函数            乘积的积分值是在该时移点上此函数的函数值            :

            

根据这些性质可以看到函数            与处于时间轴上某点的单位脉冲函数相乘后的积分都等于该点的函数值,而其他所有点皆为零。这样,就等于通过这一处理将任意点的函数值筛选出来。这一特性后面被用来描述信号的采样过程。      

②             函数的卷积性质

a.任一函数                        的卷积仍是此函数本身:

           (12)

b.同理,任一函数          与具有时移          的单位脉冲函数          的卷积是时移后的该函数          :

           (13)

也可以采用图6所示的图解方法描述,一个在坐标原点对称的矩形函数          与具有时移的两个单位脉冲          和          作卷积,其结果是将          移至在这两个单位脉冲函数所在位置上,即一函数与时间轴上任一点的单位脉冲函数卷积,其结果是将该函数原封不动地搬移到单位脉冲函数所在的时间轴位置。      

图6 任一函数与            函数的卷积

(3)             函数的频谱

            函数时频域波形及对应频谱如图7所示,可知其在整个频域上都有分布。      

图7             函数的频谱

(4)             函数的物理意义

          函数也叫冲击函数,是用以把一些抽象的不连续的物理量表示成形式上连续且能进行各种数学运算的广义函数。例如,它可以把集中载荷表示为分布载荷(分布面积为零,载荷集度为无穷大),把理想的碰撞冲量表示成一般冲量(作用的时间为零,作用力为无穷大 ),可以作为一种理想的脉冲激励函数。
例如,采用敲击实验法测量叶片的共振频率,就是利用脉冲激励原理实现的。由锤敲击产生的冲击脉冲相当一个            函数,其频谱在理论上是一根直线,也就是在所有的频段具有相同的能量,称为白噪声。在与叶片的固有频率交叉处,会产生共振,引起系统的自由衰减振动,检测这个振动频率就是被测叶片的固有频率。      
反之,直流信号的频谱是            函数,所以当信号中含有直流成分时,在频谱中的0频率附近就会有较高幅值的谱峰 (            函数)出现,这会严重影响其他计算结果的显示比例,而且处于0点附近,不易被察觉,易产生误判,如图8(a) 所示。所以,如前所述,信号处理前一般都要进行均值化处理。零均值化处理后的频谱如图8(b) 所示,可见,简谐信号的幅值已变为最大值,说明          函数的影响被剔除。

图8 含有均值和不含均值的简谐信号的频谱        

2.2 周期单位脉冲信号 (梳状            函数)

(1) 定义

周期单位脉冲序列          如图9(a)所示,其解析表达式为:

           (14)

式中,          为周期脉冲序列          的周期。

图9 周期单位脉冲序列及其频谱

(2) 梳状            函数的频谱

频谱图如9(b)所示,周期单位脉冲序列的频谱仍是一个周期单位脉冲序列,其幅值为时域周期            的倒数, 即         ;频谱的周期也是时域周期的倒数。梳状函数主要用于从数学上描述信号的采样过程。

3、信号的采样


         
在信号处理领域,计算机只能处理离散的时间序列函数,因此计算机需要把连续变化的信号变成离散信号后再进行相关的处理与运算

3.1 连续信号的采样

一个连续时间信号          的采样过程如图10所示,图10(b)中的采样开关称为采样器,在采样器作用下的实际采样信号用          表示。
信号处理系统的采样一般多为定时等间隔周期采样,采样间隔为          ,此时,当          时刻,采样开关闭合,采样器的输出恒等于          采样开关闭合时间为          ,到达          时刻,采样开关打开,采样器的输出为零。这样,在采样器的作用下就得到了图10(c)所示的采样器的输出信号          。

图10 连续时间信号的采样过程

梳状            函数            可以作为理想采样开关,来描述理想的采样过程。从数学上讲,采样信号            可以看成                        的乘积,即:

          

从物理意义上,上述描述的理想采样过程可理解为脉冲调制过程:输入信号            作为调制信号单位脉冲序列            作为载波,经过理想采样开关,得到理想采样序列          ,如图11所示。

图11 理想采样过程

3.2 采样定理

信号的采样确定了连续时间信号          的采样表达式          ,那么,采样间隔            必须符合什么样的条件时            才能保留有原连续时间信号            的所有信息。香农(Shannon)采样定理解决了此类问题。
设连续时间信号         ,其傅里叶换为          ,        频谱中的最高频率成分为          ,对连续时间信号        采样,采样频率为          ,采样后的离散时间信号为        ,如果满足条件          ,可以从离散时间信号        中恢复原连续时间信号        ,否则,会发生频率混叠,从离散信号        中无法恢复原连续时间信号         
我们可以用下面的图解说明这个过程。
假设              为连续函数            为无穷脉冲序列,其采样间隔          波形如图12(a), (b) 所示。                    相乘即可以得到离散的          信号,其波形如图12(e) 所示,此过程称为采样也称为时域离散         叫做采样函数。
可以利用卷积定理来讨论采样在频域中的变化过程。                 的傅里叶变换分别表示于图12(c) 和(d) 中。依据卷积定理图12(f)中的图像应是图12(c)和(d) 的频域函数          的卷积。由于            是无限个          函数,所以根据函数卷积性质只需将          移到每个          函数位置上即可,可见离散后的信号的频谱是一个周期函数只需观察其中的一个周期即可,它与连续函数         的傅里叶变换相同。

图12 波形采样过程 (普通采样频率)        

图13 波形采样过程(较低采样频率)

如在上例中,加大采样间隔            (即采样频率变小),其结果如图13所示。可见由于增大了          频域采样函数            变得更密,因为频域脉冲函数的间隔减小,它们与频谱            的卷积就产生了波形的相互重叠,如图13(f)所示,函数的傅里叶变换由于采样引起的这种畸变称为混叠效应
混叠效应产生的原因在于采样间隔          太大, 也就是采样频率过低。如何才能不产生这种现象呢?在图14中可以看出,当            脉冲函数的频率间隔小于            ,即          ,卷积便出现重叠现象,这里            是连续函数            的最高频率成分

图14 不产生混叠现象时的频谱

如果令          ,          称为采样频率, 不发生混叠效应的公式为:

           (15)

即:

          

如果认为信号中的最高频率          等于          的话, 则有:

             (16)

这就是香农采样定理

实际工程中,取:

            

未知的信号最高频率成分            ,可由信号的低通滤波器的截止频率产生。      

3.3 采样点数与频率分辨率

信号分析处理过程中,首先要确定的是采样频率            ,采样频率应符合采样定理。其次要确定采样点数            和频率分辨率            。采样点数受到快速傅里叶变换( FFT) 变换的限制,一般情况下,只能取1024或2048 这类          的点数。采样频率            、采样点数            和频率分辨率            之间的关系如下:      

             (17)

式中,            为采样总时间长度(单位为s);          为采样间隔。

频率分辨率决定了频谱的分析精度,要想提高频率分辨率(降低          ),应尽量减少采样频率          ,或增加采样点数          
例,已知某信号的最高频率          ,希望达到的频率分辨率          ,试选择采样频率          、采样长度          及采样          。

采样频率          ,取:

             

频率分辨率          ,采样时间长度          为:

          

采样点数          ,于是:

          

此时, 应取          应取1024,采样频率为 :

          

由于采样长度未变,此时,频率分辨率仍然不变,且          符合要求。

4、离散傅里叶变换(DFT)


         
离散傅里叶变换 (Discrete Fourier Transform, DFT)是一种用计算机计算傅里叶变换的方法。

4.1 DFT的理论公式及计算过程

连续时间信号            经采样后得到长度为              的时间列              ,此时频谱              仍是连续的,但是,实际运算中只能对有限项进行计算,因此必须对连续的频率轴离散化,以便与时域采样信号相对应。
根据DFT的定义,一个连续函数的DFT求解过程需要三步时域离散时域截断频域离散,时域离散的过程已经在3.1中讨论过了,这里仅简单介绍,重点讨论时域截断和频域离散后两步过程。

(1) 第一步:时域离散

如图15(a)~(c)所示,对            [图15(a)]进行波形采样,即将            乘以采样函数            [图15(b)],采样间隔为            。图15(c)表示采样结果和它的傅里叶变换。这是对原始波形的第一次修改,一般将这一步修改叫做时域离散。由前面的3.2可知,采样后多少会产生一些混叠误差,可遵循采样定理来减少这一误差。

(2) 第二步:时域截断

采样后的函数            ,仍有无穷多个样本值,不适合计算机计算,所以必须将采样后的函数            进行截断,使之为有限个样本点。图15(d)表示了截断函数(矩形窗函数)和它的傅里叶变换。            为截断函数的区间宽度。图15(e)表示截断后有限宽度的离散时间函数,其傅里叶变换是带混叠效应的频率函数截断窗函数的傅里叶变换作卷积。它的影响已在图15(e)中表示出来,使其傅里叶变换结果出现了皱褶(为了清楚起见,图中有意夸大了),称为频率泄漏。要想减少这种频率泄漏,可将截断窗函数的长度尽可能选得长些,因为矩形函数的傅里叶变换是            ,若增加截断函数的长度              ,该函数就越近于              函数。这时,在频域的函数卷积中由于截断所引起的皱褶(或误差)也就越小。一般总希望截断函数的长度尽可能选得长些,但是,由于计算机内存的限制,不可能无限长,因此,频率泄漏现象总是存在的,这在后面我们还要讨论。这是对原信号傅里叶变换的第二次修改,称为对离散波形的时域截断时域截断会产生频域泄漏误差        

图15 DFT过程的图解说明

(3) 第三步:频域离散(或称时域延拓)

将原始波形修改到图15(e)还不行,因为频域函数还是连续的,仍不能用计算机进行频域的计算。所以还必须用频域采样函数              把频域函数离散化。根据式(17),频率离散的间隔              应为              
我们知道,时域采样引起频域的周期化。那么,在频域上采样的结果也会引起时域函数的周期化。当用图15(f)所示频域采样函数            与图15(e)所示的频域函数相乘时,相当于图15(f)所示时域函数            与            相卷积,由于            也是梳状            函数,相当于把          平移至各个          函数处,如图15(g)的            所示,这引起了时域函数的周期化称为时域延拓为了保证时域延拓时周期函数能够首尾相接,频域采样间隔            必须是窗长度              的倒数
频域采样也会引起一种误差称为栅栏效应。我们可以把频域采样函数出现的位置想象成光栅的一根线,用其与原始信号相比,只有光栅线位置上的信号能被看到其他都被栅栏挡住了,所以称为栅栏效应。与时域信号不同,频谱多呈函数的特性,所以很小的栅栏效应就会引起很大的幅值误差。解决栅栏效应的办法就是减少              的值,即减少采样频率,或加长时域截断窗              的长度,但这些也都是有限制的。因此,栅栏效应也总是多少存在的。
图15(g)为最终的变换结果,可见,离散里叶变换相当于将原时间函数和频域函数二者都截断并修改成周期函数。其中中间的            个时间采样值和            个频域采样值为真值其余均为周期化产生的。或者说,为了进行傅里叶变换,DFT方法用长度为              矩形函数截取任意一段非周期函数,将其左右时域延拓后,形成一个新的周期为              的周期函数,然后对其进行傅里叶变换,根据傅里叶级数的特点,此时信号的基频            即为频谱信号的频率分辨率。
值得一提的是,当采用计算机计算傅里叶变换时,得到的频谱并不在图15(g)所示的位置。而在图16所示的位置。当频谱的离散时间序列为            时,其中            为正频率部分,根据频谱的延拓性,            部分其实为负频率部分,或者说是右边第一个延拓谱的负频率部分。不管怎么说,由于实数的频谱是正负频率对称的,因此,只有前一半的计算点(              点)有意义

图16 DFT运算频谱的实际位置

         

5、快速傅里叶变换(FFT)


         

5.1 快速傅里叶变换(FFT)的方法提出背景

FFT其是一种高效快速计算DFT的算法。对于            点的时间序列            的直接计算DFT,需要进行            次复数乘法和            复数加法的运算。已知一次复数乘法等于四次实数乘法,一次复数加法等于两次实数加法。因此,对大的            来说(数据处理中一般取            =1024),这是一个相当大的运算量。所以,虽然早就有了DFT理论及计算方法,但因计算工作量大、计算时间长,限制了实际应用,迫使人们想办法提高对DFT的计算速度。1965年,美国学者库利(Cooly)和图基(Tueky)提出了快速算法,即FFT(Fast Fourier Transform,FFT)算法。
基于FFT总的计算量为            次,相对直接DFT减少次数为            ,可见计算次数减少一半以上。

5.2 FFT计算案例

对一个时间函数            进行分析,其中信号频率            采样频率            ,采样点数            点,计算结果如图17所示

         

图17 FFT运算结果

可见,在图17(b) 点频谱图上除了10Hz 处的谱峰外,还有 90 Hz 谱峰,这是10Hz 的负频率成分,即被测10Hz信号的幅值轴对称成分,因此 FFT 的运算结果只取前            点即可,即图 7(a) 所示的            点频谱图是正确的。














## 导入包from matplotlib import pyplot as pltfrom matplotlib import rcParamsimport numpy as npimport pandas as pd
config = {    "font.family": 'serif', # 衬线字体    "font.size": 14, # 相当于小四大小    "font.serif": ['SimSun'], # 宋体    "mathtext.fontset": 'stix', # matplotlib渲染数学字体时使用的字体,和Times New Roman差别不大    'axes.unicode_minus': False # 处理负号,即-号}rcParams.update(config)
       





##========绘制时域信号图========##def plt_time_domain(arr, fs=1600, ylabel='Amp(mg)', title='原始数据时域图', img_save_path=None, x_vline=None, y_hline=None):    """    :fun: 绘制时域图模板    :param arr: 输入一维数组数据    :param fs: 采样频率    :param ylabel: y轴标签    :param title: 图标题    :return: None    """    import matplotlib.pyplot as plt    plt.rcParams['font.sans-serif'] = ['SimHei']  # 显示中文    plt.rcParams['axes.unicode_minus'] = False  # 显示负号    font = {'family': 'Times New Roman', 'size': '20', 'color': '0.5', 'weight': 'bold'}        plt.figure(figsize=(12,4))    length = len(arr)    t = np.linspace(0, length/fs, length)    plt.plot(t, arr, c='g')    plt.xlabel('t(s)')    plt.ylabel(ylabel)    plt.title(title)    if x_vline:        plt.vlines(x=x_vline, ymin=np.min(arr), ymax=np.max(arr), linestyle='--', colors='r')    if y_hline:        plt.hlines(y=0.2, xmin=np.min(t), xmax=np.max(t), linestyle=':', colors='y')    #===保存图片====#    if img_save_path:        plt.savefig(img_save_path, dpi=500, bbox_inches = 'tight')    plt.show()
       





##========绘制频域信号图========##def plt_fft_img(arr, fs, ylabel='Amp(mg)', title='频域图', img_save_path=None, vline=None, hline=None, xlim=None):    """    :fun: 绘制频域图模板    :param arr: 输入一维时域数组数据    :param fs: 采样频率    :param ylabel: y轴标签    :param title: 图标题    :return: None    """    # 计算频域幅值    length = len(arr)    t = np.linspace(0, length/fs, length)    fft_result = np.fft.fft(arr)    fft_freq= np.fft.fftfreq(len(arr), d=t[1]-t[0])  # FFT频率    fft_amp= 2*np.abs(fft_result)/len(t)                     # FFT幅值
   # 绘制频域图    plt.figure(figsize=(12,4))    ##=====单边频谱图====##    plt.subplot(1,2,1)    plt.plot(fft_freq[0: int(len(t)/2)], fft_amp[0: int(len(t)/2)], label='Frequency Spectrum', color='b')    plt.xlabel('频率 (Hz)')    plt.ylabel('幅值')    plt.legend()    ##=====双边频谱图====##    plt.subplot(1,2,2)    plt.plot(fft_freq[0: int(len(t))], fft_amp[0: int(len(t))], label='Frequency Spectrum', color='b')    plt.xlabel('频率 (Hz)')    plt.ylabel('幅值')    plt.legend()    if vline:        plt.vlines(x=vline, ymin=np.min(fft_amp), ymax=np.max(fft_amp), linestyle='--', colors='r')    if hline:        plt.hlines(y=hline, xmin=np.min(fft_freq), xmax=np.max(fft_freq), linestyle=':', colors='y')    #===保存图片====#    if img_save_path:        plt.savefig(img_save_path, dpi=500, bbox_inches = 'tight')    if xlim: # 图片横坐标是否设置xlim        plt.xlim(0, xlim)      plt.tight_layout()    plt.show()    return fft_freq, fft_amp
       







fs = 100  # 采样频率f = 10    # 模拟正弦信号频率time = 10.24  # 采样时长t = np.linspace(0, time, int(time*fs))data = 10*np.sin(2*np.pi*f*t) plt_time_domain(data, fs)fft_freq, fft_amp = plt_fft_img(data, int(time*fs))
       
       
       

注意,幅值为6点多,与10相差了一些,这是因为时域截断时没有截到整周期,导致出现了频率泄露,因此幅值降低了。可以试试把采样时长设置为10s,这个时候幅值接近10,即频率泄露很轻了。

       

6、总结


         
  • 频域是什么,频域包含哪些信息?
    • 在实际应用场景中,很多信号都为周期信号,如旋转机械振动、交流电流信号。这个周期其实也等同于频率,把这个周期信号用频率、幅值和相位进行描述,就是到频域了。            
  • 时域是怎么转换到频域的,时域转换到频域的原理是什么?
    • 傅里叶级数告诉我们,任何一个周期函数都可以用无限个三角函数去拟合。时域信号通过分解成傅里叶级数,即一个时域信号是由哪些个三角函数组合,把它给找出来,这个过程就是傅里叶变换。
  • 连续信号怎么转换到离散信号,有什么要注意的吗?
    • 因为计算机只能离散信号,所以需要将连续信号离散化。连续信号经过等周期的定期采样,得到离散信号。信号离散化需要满足采样定理,即采样频率              需要大于2倍信号中最大频率              。            
  • FT、DFT、FFT之间是什么关系?
    • FT,傅里叶变换,是一种将信号从时域转换到频域的理论,研究的主要是连续信号。
    • DFT,离散傅里叶变换,由于工程应用需要,计算机只能处理离散信号,因此DFT主要是处理离散信号转换至频域。
    • FFT,快速傅里叶变换,由于DFT直接计算比较复杂,计算工作量大,因此提出一种能提升计算效率的算法,即FFT。
  • 频率混叠、频率泄露分别是什么?
    • 当采样频率              小于2倍信号中最大频率              ,实际频谱中的高频部分会出现叠加,即频率混叠。
    • 在DFT时,需要用一个窗口截取信号,该窗口较小,或这窗口没有截取到周期部分时,导致在时域延拓时,信号首尾没有对接上,在频谱上出现了其它额外的频率成分,即出现了频率泄露。            
  • 直流分量是什么,会有什么影响?
    • 当信号中有直流部分,如              中1就是直流部分。当信号中含有直流成分时,在频谱中的0频率附近就会有较高幅值的谱峰出现,这会严重影响其他计算结果的显示比例。

     

     

     

     


编辑:李正平

审核、校对:陈凯歌,赵栓栓,曹希铭,赵学功,白亮,陈少华

如需转载,请后台联系作者

说明:部分图片来源网络,若有侵权,烦请联系处理



来源:故障诊断与python学习
振动碰撞旋转机械pythonUM理论Fourier Transform渲染FAST
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-09-01
最近编辑:2月前
故障诊断与python学习
硕士 签名征集中
获赞 57粉丝 63文章 133课程 0
点赞
收藏
作者推荐

SCI一区开源代码推荐 | 分类器引导的神经盲解卷积

SCI一区开源代码推荐 | 分类器引导的神经盲解卷积:用于噪声条件下轴承故障诊断的物理信息引导的去噪模块本期受文章作者投稿给大家分享一篇SCI一区的开源代码文章。如果有故障诊断相关方向研究人员希望宣传自己研究成果,欢迎大家在公众 号后台与小编联系投稿,大家一起交流学习。本文提出了一种分类器引导的盲解卷积(Classifie-guided neural BD, ClassBD),旨在实现基于BD的特征提取与基于深度学习的故障诊断的协同学习。希望对大家的学习有所帮助,也同时希望大家可以多多引用。论文基本信息论文题目:Classifier-guided neural blinddeconvolution: A physics-informed denoising module for bearing fault diagnosisunder noisy conditions论文期刊:Mechanical Systems and Signal Processing (SCI一区Top)论文日期:2024.07论文链接: https://doi.org/10.1016/j.ymssp.2024.111750作者:Jing-Xiao Liao1,2, Chao He3,4,Jipu Li1, Jinwei Sun2, Shiping Zhang2*, XiaogeZhang1*机构:1.Department of Industrial and SystemsEngineering, The Hong Kong Polytechnic University, Hong Kong, SpecialAdministrative Region of China2.School of Instrumentation Science andEngineering, Harbin Institute of Technology, Harbin, China3.School of Mechanical, Electronic andControl Engineering, Beijing Jiaotong University, Beijing, China4.State Key Laboratory of Advanced RailAutonomous Operation, Beijing Jiaotong University, Beijing, China 通讯作者邮箱:xiaoge.zhang@polyu.edu.hk作者简介:廖敬骁,现为香港理工大学工业及系统工程学系和哈尔滨工业大学仪器科学与工程学院双学位博士生,在IEEE TII、MSSP、IEEE JBHI、IEEE TAI、IEEE TIM等期刊上发表了多篇学术论文,研究方向为深度学习理论,非平稳信号处理,多项式神经网络,轴承故障诊断。通讯作者:张晓革,香港理工大学工业及系统工程学系助理教授,主要从事智能系统可靠性与安全评估以及风险管理相关方面的研究工作,相关研究成果应用于物流运输、航空交通管理等领域。曾于2016年8月至12月在美国国家航空航天局艾姆斯研究中心(NASA Ames Research Center)担任研究工程师,于2020年3至2021年8月在美国联邦快递总部担任高级运筹学分析师,并获得Bravo Zulu Award。主持香港大学教育资助委员会(RGC)杰出青年学者计划基金一项,在NatureCommunications、MSSP、RESS、IEEE TII、IEEE Trans. on Reliability等国际知名期刊发表高水平学术论文70余篇,论文总引用量达到3200余次,曾获得省部级二等奖一项,国家优秀自费留学生奖学金等荣誉。通讯作者:张世平,哈尔滨工业大学仪器科学与工程学院副教授,精密电测技术与仪器研究所所长,主要从事传感技术、信号检测及处理,以及人工智能等方向研究,先后主持承担和参与国家自然基金,以及航天、石油、电网等领域的多项科研项目。目录1 摘要2 盲解卷积3 方法 3.1 时域二阶卷积滤波器 3.2 频域线性滤波及包络谱 3.3 基于不确定性感知加权的集成4 主要实验结果5 结论1 摘要盲解卷积(Blind Deconvolution, BD)是一种有效的非平稳信号处理方法,能够从强背景噪声下的振动信号中提取轴承故障特有的特征。尽管BD在自适应性和数学可解释性上已经获得了显著的成果,但依然存在一个重大的挑战:如何有效地将BD与故障诊断分类器结合?因为传统的BD方法仅设计用于特征提取,具有独立的优化方法和目标函数。而当BD与下游的深度学习分类器结合时,不同的学习目标很容易产生冲突。为了解决这一问题,本文提出了一种分类器引导的盲解卷积(Classifie-guided neural BD, ClassBD),旨在实现基于BD的特征提取与基于深度学习的故障诊断的协同学习。为此,本文首先开发了一种基于时频域的神经BD(Neural BD),构造神经网络实现了传统BD的功能,从而促进了BD与深度学习分类器的无缝集成,实现模型参数的协同优化。Neural BD中集成了两个滤波器:一是在时域中使用的二阶神经滤波器,利用二阶卷积神经网络(Quadratic Neural Network)提取周期性脉冲;二是在频域中设计了一个由全连接神经网络组成的线性神经滤波器,用于增强离散频率成分。其次,构建了一个基于深度学习分类器的统一框架,以引导BD滤波器的学习。最后,设计了一个物理信息引导的损失函数,该函数结合了峭度(Kurtosis)、𝑙2/𝑙4范数和交叉熵损失,以协同优化BD滤波器和深度学习分类器。通过这种方式,在强噪声环境中,故障标签被充分利用来指导BD提取区分类别的特征。这是首次成功将BD方法应用于轴承故障诊断。三个不同数据集的实验结果表明ClassBD在噪声条件下的表现优于其他最先进的方法。关键词:盲解卷积;二次卷积神经滤波;频率线性神经滤波器;分类器引导信号处理;轴承故障诊断2 盲解卷积在非平稳信号处理领域,解卷积用于逆转线性时不变系统对输入信号进行卷积操作的影响。这种技术的一个特殊表示,被称为盲解卷积或更准确地说是无监督反卷积,旨在当未知信号传输系统和输入信号时,利用输出信号来恢复输入信号[1]。在旋转机械振动信号的背景下,测量信号可以解释为周期性故障脉冲与从故障源到传感器的传输路径函数之间的卷积的结果[2]。数学上,给定被测信号 、故障源信号 和加性噪声 (如高斯噪声、拉普拉斯噪声等),信号传输过程可以定义如下: 其中, 和 表示传输函数, 表示卷积操作。 BD的目标是从测量信号中提取与故障相关的特征(周期性脉冲)。为此,它通过构建滤波器 来恢复更接近故障源的信号 : 上述公式表示的是信号传输过程的简化描述,并未明确定义为线性系统。根据[2],噪声 包含各种噪声和干扰成分,这些成分可能包括由机械旋转和齿轮啮合引起的周期性谐波、外部冲击导致的随机脉冲成分以及背景噪声。这些噪声通过不同的传输路径到达传感器。然而,由于机械系统的复杂性,准确估计传输函数及其频率响应通常是不现实的。这个挑战因不可预测的噪声的存在而变得更加复杂。因此,在缺乏先验信息(如准确的故障脉冲周期)的情况下,BD 被认为是一个病态问题。鉴于故障特征的非平稳性和周期性,提出了各种稀疏性指标作为优化目标函数[3-5] 。一个典型的例子是峭度[6],它在MED中被用作目标函数[7]: 其中 表示BD滤波器的输出,其长度等于输入 。 本质上,峭度是一种评估数据分布的统计量。峭度值的增加表明数据偏离标准正态分布[6]。直观上,当故障发生时,振动信号中会出现周期性脉冲,振动信号的峭度值由于更多峰值(离群值)的存在而增加。因此,最大化峰度驱动自适应滤波器恢复更多脉冲。优化目标定义如下: 目前已经开发了几种有效的BD优化方法,包括矩阵运算[7-8]、粒子群优化 [9] 和反向传播算法[10-11]。BD的性能也会受到优化方法影响。因此,近年来,针对BD方法的研究包括提出更通用的刻画目标信号本质特征的目标函数,设计新的滤波器及初始化技术,开发更强大的优化方法等[2]。3 方法所提出的框架,如图1所示,主要由两个 BD 滤波器组成,即时域二阶卷积滤波器和频域线性滤波器。这些滤波器作为即插即用的去噪模块,执行与传统 BD方法相同的功能,以确保输出与输入维度一致。1.时域滤波器的特点是由两个对称的二次卷积神经网络(QCNN)层组成。一个16通道的QCNN用于滤波输入信号(1×2048),然后通过一个反QCNN层将16个通道融合为一个,以恢复输入信号。2.频域滤波器首先使用快速傅里叶变换(FFT)将时域信号转换为频域。随后,使用一个线性神经层对信号的频域进行滤波,并通过逆傅里叶变换(IFFT)恢复时域信号。此外,还设计了一个包络谱(ES)中的目标函数用于优化。图1 神经盲解卷积滤波器Neural BD滤波器后可以直接使用1D深度学习分类器,如ResNet、CNN或Transformer等,来识别故障类型。本文采用了WDCNN[12]作为分类器。最后,设计了一个物理信息损失函数作为优化目标来指导模型的学习。该函数包括交叉熵损失 、峭度 和 范数 , 和 分别用于计算时域滤波器和频域滤波器输出的统计特性。 3.1 时域二阶卷积滤波器二阶神经网络(quadratic convolutional neural networks, QCNN)是时域卷积滤波器的关键组成部分。二阶神经网络将传统的线性神经元替换为二阶神经神经元,以实现更强的表示能力。本文使用Fan等人提出的二阶神经元表达式[13]: 其中∗为卷积操作, 为非线性激活函数, , 为权重参数。本文进一步证明了二阶网络对循环特征提取的优越性。相比于传统神经网络,二阶神经网络的模型参数数量和非线性乘法运算显著增加。因此,需要计算难度大幅增加。先前的研究表明,传统的初始化技术会显著阻碍二次网络的收敛[14-15]。为了解决这个问题,设计了一种专门的策略来初始化二次网络:其中, 表示均值为零的高斯分布, 表示范围在 内的均匀分布, 表示 的核大小。 分组初始化策略,也称为 ReLinear[14] ,迫使 QCNN 从近似线性神经元开始训练。高阶权重的初始值被设为零,以便其缓慢增长。这一策略通过避免梯度爆炸,大大提高了二次网络在训练过程中的稳定性。本文采用两个 QCNN 层来形成对称结构,模仿多层反卷积滤波器。第一个 QCNN 层将输入映射到16个通道,而第二个QCNN层将这16个通道合并为一个输出。输出的维度被刻意保持与输入相同。这一操作有效地使用卷积神经网络实现了传统的BD滤波器。最后,由于QCNN作为时域BD使用,可以使用峭度作为时域BD目标函数: 3.2 频域线性滤波及包络谱损失函数频域滤波器作为辅助模块,直接处理信号频域。其主要思想是通过傅里叶变换,并利用神经网络作为频域内的滤波器。这种方法通常被称为傅里叶神经网络[16-17]。设通过时域滤波器的信号为 ,应用FFT 将信号转换到频域: 根据卷积定理,两个时域数据的卷积等价于其傅里叶变换域中的内积。因此,频域滤波器采用线性操作在频域内滤波信号,从而替代时域中的卷积操作。即使用全连接神经网络来实现频域滤波器: 应用IFFT将信号恢复到时域: 其次,还需要为频域滤波器设计一个目标函数。先前的研究提出了一些频域BD目标函数,如包络谱𝑙1/𝑙2范数[18] 、包络谱峰度(ESK)[19]和𝑙𝑝/𝑙𝑞范数[4] 。这些方法的基本概念是增强频域信号的稀疏性,从而有效减轻噪声频率成分的影响。本文采用这一思路,基于包络谱(ES)设计目标函数。目标函数设计为衡量信号包络谱的稀疏性指标(包络谱的𝑙2/𝑙4范数): 3.3 基于不确定性感知加权的集成优化故障诊断任务通常需要一个深度学习分类器,此时损失函数演变为联合损失: 其中, 表示交叉熵损失。 此时,优化ClassBD被转换为一个多任务学习问题[20]。在多任务学习的背景下,一个关键挑战在于平衡不同损失项。为了解决这个问题,采用了不确定性感知加权损失,以自动平衡每个损失函数对学习问题的重要性[21] 。假设所有任务都有任务相关或同方差的不确定性,所有任务的损失函数都受到高斯噪声的影响,则似然函数可以定义为: 其中 表示噪声的方差。 联合损失可以转换为: 𝜎的值越大,对应损失的贡献就越小,反之亦然。每个𝜎被视为一个可学习的参数,其初始值设定为−0.5,见[21-22]。在训练过程中,尺度由最后一项log𝜎调节,如果𝜎过大将受到惩罚。尽管这种策略无法实现完美的平衡,但它可以让每个损失平稳下降,防止快速收敛到零。4 主要实验结果表1 PU数据集强噪声分类结果表2 JNU数据集强噪声分类结果表3 PU "N09M07F10" 数据集不同类型噪声下分类结果表4 PU数据集基于ClassBD使用不同分类器的分类结果图2 TSNE可视化结果图3 BD方法特征提取结果(增强包络谱)图4 传统神经网络和二阶神经网络特征提取结果5 结论本研究提出了一种新颖的方法,称为ClassBD,用于在强噪声条件下进行轴承故障诊断。ClassBD由级联的时域和频域Neural BD滤波器组成,随后连接一个深度学习分类器。具体来说,时域BD滤波器采用二次卷积神经网络(QCNN),在数学上证明了其在时域提取周期性脉冲特征的优越能力。频域BD滤波器包括一个全连接线性滤波器,补充了神经网络对频域的提取能力。此外,ClassBD直接集成一个深度学习分类器实现了端到端的故障诊断。设计了一个物理信息损失函数,该损失函数由峭度、 范数和交叉熵损失组成,以促进分类器引导BD学习。这个统一的框架将传统的无监督BD转变为监督学习,并由于保留了传统BD操作而提供了解释性。最后,三个公开和自测数据集上进行的综合实验表明,ClassBD优于其他最先进的方法。ClassBD是第一个可以直接应用于分类的BD方法,表现出良好的抗噪性和可移植性。因此,ClassBD在未来研究中具有进一步推广到其他困难任务(如跨域和小样本问题)的巨大潜力。编辑:李正平校核:陈凯歌、赵栓栓、曹希铭、赵学功、白亮、陈少华该文资料(BD)搜集自网络,仅用作学术分享,不做商业用途,若侵权,后台联系小编进行删除。来源:故障诊断与python学习

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈