精华内容
下载资源
问答
  • teager能量算子
    千次阅读
    2019-08-03 16:32:58

    前言

    笔者要投身于语音信号的研究当中,这段时间会更一些语音信号相关算法研究。
    能量分离算法(ESA)使用非线性能量算子来跟踪语音信号,将只包含单个共振峰的语音信号分离成频率分量与幅值分量。
    ESA基于Teager能量算子,其中在离散领域中其能量算子可以表示为:
    s(n)*s(n)-s(n+1)*s(n-1)
    s(n)代表语音信号

    Teager能量算子的python实现

    def Teager_power_function(audio_wav):
        Teager_power=np.zeros(len(audio_wav))
    ##############离散Teager能量算子的公式=S(n)*S(n)-S(n+1)*S*(n-1)
        for i in range(1,len(audio_wav)-1):
            Teager_power[i]=audio_wav[i]*audio_wav[i]-audio_wav[i+1]*audio_wav[i-1]
        return Teager_power
    
    

    ESA算法的实现

    由于具体的公式比较麻烦,这里就不贴了,大家可以去看韩纪庆的语音信号处理第二章2.4.3节的讲解。

    r_d=Teager_power_function(audio_1)
    y=np.zeros(len(audio_1))
    ###########前向差分
    for i in range(1,len(audio_1)):
        y[i]=audio_1[i]-audio_1[i-1]
    z=np.zeros(len(audio_1))
    ###############后向差分
    for i in range(0,len(audio_1)-2):
        z[i]=audio_1[i+1]-audio_1[i] 
        
    y_d=Teager_power_function(y)
    z_d=Teager_power_function(z)
    G=1-(y_d+z_d)/(4*r_d)
    f=(i/2*3.14*20)*np.arccos(G)
    a=np.sqrt(r_d/(1-pow(G,2)))
    plt.figure(1)
    plt.plot(f)
    plt.figure(2)
    plt.plot(a)
    

    这部分代码主要做了两件事,用y与z来代表语音信号的前向与后向差分,然后分别求得y与z的Teager能量算子,最后根据相应的公式求得频率与幅值的结果。

    更多相关内容
  • teager能量算子的程序,离散时间的Teager能量算子的一个重要的特性是,它仅需要三个样本点就可以并且几乎是实时地估计出能量信息
  • 计算加速过程等角度重采样信号的Teager能量算子,对Teager能量算子输出进行倒谱分析,获得Teager能量算子增强倒阶次谱。对加速过程滚动轴承外圈、内圈剥落故障信号进行分析,结果表明,Teager能量算子能有效增强冲击成分...
  • 针对传统阈值去噪中出现的信号与噪声小波包系数的混叠现象、阈值函数在阈值处不连续、小波包系数估计值与原始值存在恒定偏差等问题,提出了一种基于Teager能量算子的改进阈值函数的去噪算法。该算法首先对小波包分解...
  • 提出了一种基于局部特征尺度分解和Teager 能量算子包络解调的滚动轴承故障诊断方法. 首先,在定义具有物理意义瞬时频率的单分量信号―――内禀尺度分量( intrinsic scale component,ISC)的基础上介绍了一种全新的信号...
  • %% % 计算信号的能量算子%% %输入 %1。 原始信号(矢量) %2。 gr(绘制或不绘制) %% %输出 %Energy 操作符信号 (ey) %Teager 操作员(前) %% %方法 %The Teager Energy Operator 确定为%(x(t)) = (dx/...
  • 老师能量算子的matlab代码转RBM 运行 ConvRBM 的代码 由 Hardik B. Sailor 博士在博士研究期间在 DA-IICT 创建 使用 ConvRBM 学习听觉滤波器组的自述文件(在 MATLAB 中) 主文件是 hardik_raw_train.m,它将指导您...
  • 集成经验模态分解和Teager能量算子的心电图改进人体识别方法
  • Teager能量算子解调

    2014-08-17 16:47:11
    利用labview软件编辑能量算子解调的程序
  • teager能量算子MATLAB代码,应用于信号分析
  • Teager能量算子的算法,大家可以参考下
  • Teager能量算子,一种非线性算子,增强冲击成分分量
  • teager能量算子源程序以及测试程序,实现对波形的解调以及包络分析。
  • 为实现调制信号瞬时幅值和瞬时频率的分离检测,研究了Hilbert变换解调方法和Teager能量算子解调方法,给出了详细算法和应用注意事项。利用仿真信号对两种解调方法进行了对比分析,结果表明:Teager能量算子解调方法...
  • 提取teager能量算子和其解调信号,能够增强和突出冲击信号
  • 滚动轴承信号的保罗谱分析,hilbert Teager能量算子,信号平方,信号取绝对值等等方法求信号包络谱
  • TEO(Teager 能量算子)是一种能够有效提取信号能量的非线性算子,对于给定信 号,TEO 运算能够反映出能量的瞬时变化: 从公式 (4.18) 可以得出,TEO 具有很小的计算量,可以通过连续三个采样点的值计算出离散信号...

    TEO(Teager 能量算子)是一种能够有效提取信号能量的非线性算子,对于给定信
    号,TEO 运算能够反映出能量的瞬时变化:
    在这里插入图片描述
    从公式 (4.18) 可以得出,TEO 具有很小的计算量,可以通过连续三个采样点的值计算出离散信号的能量,实现起来简单而快捷。TEO 能够快速跟踪信号的变化,如果经过TEO 计算出的能量值越大,则给定信号的幅值或频率变化的就越快,对信号奇异性进行检测就是根据这一特点得出的。

    def Teager_power_function(Signal):
        Teager_power=np.zeros(len(Signal))
    	#离散Teager能量算子的公式=S(n)*S(n)-S(n+1)*S*(n-1)
        for i in range(1,len(Signal)-1):
            Teager_power[i]=Signal[i]*Signal[i]-Signal[i+1]*Signal[i-1]
        return Teager_power
    
    展开全文
  • 运用凯斯西储大学滚动轴承故障数据,运用MOMEDA对信号进行周期的增强,提高信噪比,并运用希尔伯特变换,与Teager能量算子包络解调,体现Teager能量算子二次增强。同时还存在MCKD,
  • teager_能量算子_teager_teager能量算子_teager能量.zip
  • teager_能量算子_teager_teager能量算子_teager能量_源码.rar
  • 基于EMD 和Teager 能量算子的轴承故障诊断研究
  • eager 能量算子能够估计产生信号所需的总机械能, ...提出了基于 Teager 能量算子的频谱分析方法, 利用 Teager 能量算子提取轴承故障引起的周期性冲击, 通过瞬时 Teager 能量的 Fourier 频谱识别轴承的故障特征频率。
  • 采用matlab编写的能量算子解调方法,可与Hilbert包络解调进行对比,常用于故障诊断中
  • 原文:An approach to fault diagnosis of reciprocating compressor valves using Teager–Kaiser energy operator and deep belief networks 链接:https://doi.org/10.1016/j.eswa.2013.12.026 摘要 提出了一种...

    原文:An approach to fault diagnosis of reciprocating compressor valves using Teager–Kaiser energy operator and deep belief networks
    链接:https://doi.org/10.1016/j.eswa.2013.12.026
    摘要

    提出了一种实现往复式压缩机气门振动、压力和电流信号故障诊断的方法。由于压缩机结构和运动的复杂性,采集到的振动信号通常包含瞬态冲击和噪声。这就造成了有用信息的破坏,传统方法难以准确诊断故障。为了揭示该信号中包含的故障模式,提出了Teager-Kaiser能量运算(TKEO)来估计振幅包络。在压力和电流的情况下,采用基于小波变换的去噪方法去除随机噪声。随后,从所有信号中提取统计度量来表示阀门状态的特征。为了对压缩机阀门故障进行分类,提出了一种新的深层生成模型学习结构,称为深层信念网络(deep-belience networks,DBNs)。DBN采用多层受限Boltzmann机(RBMs)的分层结构,通过贪婪的逐层学习算法进行学习。在模式识别的研究领域,DBN已经被证明是非常有效的,并且对二进制值具有很高的性能。然而,为了将动态贝叶斯网络应用于大多数信号为实值信号的故障诊断,本研究考虑了具有伯努利隐单元和高斯可见单元的RBM。以两级往复式空气压缩机为例,验证了该方法的有效性。为了验证DBN在故障分类中的优越性,将其性能与相关向量机和反向传播神经网络进行了比较。结果表明,该方法具有较高的可靠性,适用于工业往复机械的故障诊断。
    1介绍

    往复式压缩机(RC)是工业应用中应用最广泛的一种压缩机,由于具有较高的压比,是输气管道、石油化工厂、炼油厂等行业的关键设备。与离心式压缩机等其他类型相比,全世界大约安装了三倍于马力的RC,其维护成本高于这三倍半(Griffith&Flanagan,2001)。由于钢筋混凝土结构的复杂性和多个构件在高温、高压等关键条件下的工作,钢筋混凝土的失效是可能发生的,不仅会导致生产过程的停工,还会造成人员伤亡。在RC中,吸入阀和排出阀是经常发生故障的部件。根据Leonard的研究(Leonard,1996),需要关闭压缩机的情况中有36%和总维修成本的50%与阀门故障有关。这促使人们考虑RC阀门的准确可靠的故障诊断方法,以实现安全生产和最小化维护成本。
    近年来,文献中提出了基于振动和声学信号的RC及其阀门故障诊断方法。然而,RC是一种机器,它包含了大量在旋转和线性方向上运动的部件,这些部件会导致振动信号的非平稳和噪声。因此,传统的快速傅立叶变换(FFT)等振动分析技术已成功地应用于旋转机械的振动信号分析中。处理非平稳或瞬态信号的替代方法是将信号分解为子带,在子带中可以获得平稳和线性特征,并且容易提取故障模式。小波变换(WT)和经验模态分解(EMD)是钢筋混凝土振动信号处理的突出代表。例如,Yang,Hwang,Kim,and Tan(2005)采用离散小波变换,以Daubeches-10作为基本函数,将振动和声学信号分解为不同的子频带。然后,从前4层提取统计测度,利用人工神经网络(ANNs)和支持向量机(SVMs)作为分类器,对冰箱用小RC进行故障识别。Lin(2010)分别采用集成EMD将振动信号分解为不同频率的固有模态函数(IMF)和Hilbert谱来提取故障特征。然而,小波变换普遍存在着一些缺点,如难以选择合适的基本函数、没有针对不同任务的选择标准或一般规则、多分辨率恒定等。与EMD相似,第一个IMF不是一个单一的特征分量,由于使用了广泛的频率范围,因此很难提取故障模式,EMD的计算成本很高(Bin,Gao,Li,&Dhillon,2012)。一些研究者提出了从RC振动中提取故障特征的各种方法来进行故障诊断。例如,Cui,Zhang,Kang,and Lan(2009)利用奇异谱熵、谱熵、小波包熵等不同的信息熵特征作为支持向量机的输入来诊断阀门故障。秦江峰和何(2012)也应用支持向量机识别压缩机阀门的故障类型,其中支持向量机的输入是参数化波形、衰减特征和从波形匹配方法中提取的阻尼固有频率。利用振动和/或声信号进行故障模式识别的其他研究见参考文献。Elhaj等人(2008)、Pichler、Schrems、Buchegger、Huschenbett和Pichler(2011)、Verma、Kadambari、Abhijit、Tanu和Salour(2011)以及Youfu、Shulin、Na和Ruihong(2013)。
    由于压力信号能准确地反映阀门的工作状态,因此在阀门故障诊断中,另一个备受关注的信号是压力信号。这个信号的常见用法是用示功图来描述一个工作循环中的能量,在示功图中使用压力和体积,即所谓的P-V图。一旦阀门发生故障,压力和P–V图的形状会相应地改变。有几种方法实现了这一特征来识别压缩机阀门的故障。Feng,Jiang,He,and Ma(2011)主要基于P–V图的2D数字图像进行阀门故障诊断,如排放阀堵塞、吸入阀堵塞、排放阀泄漏等。利用curvelet变换提取该图的代表性特征,用主成分分析降低特征集的高维性,用SVM对故障进行分类。在Wang、Song、Zhang和Li(2010)的研究中,还进行了支持向量机和从P–V图图像中提取的不变矩。另一项研究调查了该研究区域P-V图的使用情况,见Wang、Zhuang和Yu(2010)。然而,使用P-V图将导致二维信号的处理,这比一维信号更为复杂和昂贵。另一个信号是驱动RC的感应电机的电流,也集中在Gu、Shao、Hu、Naid和Ball(2011)和Zhen、Wang、Gu和Ball(2013)中,其中使用了改进的双谱和动态时间扭曲来分析,以便分别识别RC的故障。然而,当需要足够的知识来准确地对故障发生及其严重程度进行分类时,分析性故障诊断方法似乎是一个挑战。此外,它们不适用于决策支持系统。
    本文将上述三种信号同时引入到Teager-Kaiser能量算子(TKEO)和深度信念网络(DBNs)的RC阀故障诊断中。一般来说,非线性TKEO(Kaiser,1990,1993)测量由单一时变频率组成的信号的瞬时能量变化。与其他方法相比,TKEO的一个主要优点是计算出的能量来自信号的瞬时振幅和瞬时频率(Solnik、Rider、Steinweg、DeVita和Hortobágyi,2010)。TKEO具有较高的时间分辨率和对信号瞬时变化的良好适应性,可以增强瞬态特征,适合于探测撞击信号(Liu,Wang,&Lu,2013)。在故障诊断领域,TKEO及其扩展已被应用于轴承(Li,Fu,&Zhang,2009;Liang&Bozchaloi,2010;Liu et al.,2013;Rodríguez,Alonso,Ferrer,&Travieso,2013)和齿轮(Li,Zheng,&Tang,2010)的故障诊断。本文利用TKEO估计瞬态振动信号的幅度包络(AM信号),然后从中提取AM信号的统计特征。对于压力和电流信号,在提取统计特征之前,采用基于小波变换的去噪方法进行去噪。基于这些特征,应用Hinton、Osindero和Teh(2006)提出的DBN和一种新的机器学习方法对RC阀故障进行分类。DBN是由多层受限玻耳兹曼机(RBM)组成的概率生成模型。RBMs的贪心逐层学习算法可以有效地对模型进行无监督的预训练,然后利用随机梯度下降和标记数据对模型参数进行微调。学习算法和微调过程使DBN获得了较高的性能,并已成功地应用于语音识别(Mohamed,Dahl,&Hinton,2009,2012)、手写字符识别(Hinton,2002;Hinton et al.,2006)、目标识别(Nair&Hinton,2009),DBN还解决了飞机发动机和电力变压器的故障诊断问题(Tamilselvan&Wang,2013)。原来,DBN中RBM的可见单元和隐藏单元只能取二进制值,而打开隐藏单元的概率是用logistic函数计算的。然而,这种基于成果的管理对于建模实值数据来说非常不方便,而且表示性很差(Hinton,2010)。为了解决这一问题,本文考虑了一种高斯-伯努利RBM模型,其中隐单元是二进制的,而可见单元是高斯噪声和单位方差线性的。
    2方法
    2.1. Teager–凯撒能源运营商
    Teager-Kaiser能量算符(TKEO)ψ[·]定义为连续时间信号x(t),如下所示(Cexus&Boudraa,2004;Maragos,Kaiser&Quatieri,1993a):
    在这里插入图片描述
    其中x·(t)和x··(t)分别是x(t)的第一次和第二次导数。在离散情况下,时间导数可以用时间差来近似。离散时间对应物变为(Cexus和Boudraa,2004;Maragos,Kaiser和Quatieri,1993b):
    在这里插入图片描述
    TKEO的一个重要方面是它几乎是瞬时的,因为每个时刻只需要三个样本来计算能量。此外,这种高时间革命和简单的操作提供了捕捉能量波动的能力,以及在执行中有效地执行。Maragos等人(1993b)提出了离散能量分离算法(discrete energy separation algorithms,DESAs),用于估计离散时间信号的振幅包络a(n)和瞬时频率f(n)。有三种主要类型涉及DESA-1、DESA-1a和DESA-2,其中前两种使用两个样本差异,而后一种使用三个样本对称差异。这些算法的a(n)和f(n)如下所示:
    在这里插入图片描述
    在许多情况下,DESA-1和DESA-2都优于DESA-1a。此外,DESA-1略优于DESA-2(Maragos等人,1993b)。因此,本研究采用DESA-1。
    2.2. 深层信念网络
    2.2.1. 受限Boltzmann机器的结构
    受限玻耳兹曼机(RBM)是一种特殊的马尔可夫随机场,由一层二元随机隐单元h∈{0,1}H和一层二元随机可见单元v∈{0,1}V构成。RBM可以表示为一个二部无向图模型,其中所有可见单元都与所有隐单元相连,但不存在可见或隐藏的联系。可见层和隐藏层之间的权重是无向的,用w表示。可见单元和隐藏单元的偏差分别用向量b和a表示。RBM的体系结构如图1所示。
    在这里插入图片描述
    在二元RBM中,连接的权重和各单元的偏差通过能量函数定义了可视单元和隐藏单元联合状态的概率分布。给出了该能量(Hinton,2010;Mohamed et al.,2012;Salakhutdinov,2009):
    在这里插入图片描述
    其中vi和hj是可见单元i和隐藏单元j的二元状态,θ={w,b,a}是模型参数:wij是可见单元i和隐藏单元j之间的权重,bj和ai是它们的偏差,V和H是可见单元和隐藏单元的数目。可见单元和隐藏单元的联合分布通过能量函数定义如下:
    在这里插入图片描述
    模型分配给可见向量v的概率通过对所有可能的隐藏向量求和得到:
    在这里插入图片描述
    由于RBM的特殊二部结构,隐藏单元可以显式边缘化:
    在这里插入图片描述
    隐单元h和可见向量v的条件概率可以给出:
    在这里插入图片描述
    它类似于分配给隐藏向量h的概率和可视单位v的条件概率:
    在这里插入图片描述
    因为不存在隐藏-隐藏或可见-可见的连接,条件概率p(v | h)和p(h | v)是阶乘的,由下式给出:
    在这里插入图片描述
    其中σ=1/(1+exp(-x))是逻辑函数。
    2.2.2. 训练RBM
    通过对训练数据的负对数似然概率进行随机梯度下降,学习RBM模型。可见层的负对数概率相对于模型参数θ的梯度可从式(14)中获得:
    在这里插入图片描述
    其中<·>data表示关于数据分布的期望,<·>model表示关于模型定义的分布的期望。前一个标记为正相位的项增加了训练数据的概率,而后一个标记为负相位的项降低了模型生成样本的概率。然而,期望<·>model难以计算(Salakhutdinov&Murray,2008)。因此,在实践中,使用所谓对比散度(CD)的梯度近似值(Hinton,2002),其中<·>model被Gibbs采样器代替,并在数据处启动。从可见光数据t出发,m阶吉布斯采样器如下:
    在这里插入图片描述
    第k步的条件概率p(h|v(k))和p(v|h(k))分别由等式计算。(19) 和(20)。设置m=∞可恢复最大似然学习。然而,在许多应用中,m=1(或CD1)的CD学习已经产生了足够的结果。使用等式。(21)–(23)和CD1学习,给出了参数θ的更新规则:
    在这里插入图片描述
    其中εw、εa、εb分别是权重、隐藏偏差和可见偏差的学习率。
    在单个训练集上估计梯度后,权值可以更新。然而,如果将训练集分成10-100个小的“小批量”,则效率更高。我们假设一个最小的学习率乘以一个最小的学习率,这个最小的学习率乘以一个最小的学习率,不是小批量的总梯度(Hinton,2010)。
    2.2.3. 高斯-伯努利RBM(GB-RBM)
    最初,RBM是通过对可见层和隐藏层使用二元随机单元开发的。在处理实值数据时,用带独立高斯噪声的线性单元代替可见单元。GB-RBM的能量函数变为(Hinton,2010;Senoussaoui,Dehak,Kenny,Dehak,&Dumouchel,2012):在这里插入图片描述
    其中σi是可见单位vi的标准偏差。
    概率函数的驱动方式如下:在这里插入图片描述
    在这种情况下,模型分配给可见向量v的概率变为:在这里插入图片描述
    此外,条件概率表示为:在这里插入图片描述
    其中g是逻辑函数,x是实数。
    可以学习每个可见单元的噪声方差,但使用CD1很困难。在实际应用中,在用GB-RBM建模之前,数据被归一化为零均值和单位方差。这使得模型实现更加简单。
    2.2.4. DBN体系结构
    如图2所示,通过逐层堆叠多个rbm来形成DBN。该体系结构通过CD算法对rbm序列进行训练,保证了DBN的训练。训练过程如下所述:每个RBM层通过使用下层RBM的激活概率作为输入训练数据进行训练,其输出是上一RBM层的输入。请注意,这种学习过程所谓的预培训是无监督的。另外,第一RBM层输入原始输入数据,对于实值输入为GB-RBM,其他RBM层为二进制或Bernoulli-Bernoulli-RBM。
    对于分类任务,生成性预训练可以紧跟或与其他典型的区分性学习过程相结合,这些学习过程可以微调所有权重以提高网络的性能。通过添加表示训练数据中提供的标签的额外变量层来执行这种区分性微调。然后,使用反向传播算法调整网络权值,方法与标准前馈神经网络相同。
    在这里插入图片描述
    3阀门故障实验
    为了评估所提出的方案,我们的实验是在一个RC上进行的,该RC设计用于将0.55mpa到0.8mpa的空气压缩到工作在1.38mpa的最大压力下的接收器。该压缩机由两级组成,第一级(低压)压缩的空气通过风冷中冷器进入第二级(高压),然后储存在储气罐中。曲轴以440转/分的速度运行,由一台以1420转/分的速度运行的三相感应电动机通过两个V形皮带驱动。图3a和表1分别显示了该RC的布局,包括传感器位置和其他规范。在这里插入图片描述
    在这里插入图片描述
    采用两级不同的吸入阀和排出阀的工作状态生成实验数据。其中一个是正常状态(NOR),而其他是吸入泄漏、排放泄漏和弹簧劣化。阀门的泄漏是通过在阀板上钻一个直径为1毫米的孔人工造成的。除正常工况外,故障工况为第一级排气泄漏(DL1)、第二级排气泄漏(DL2)、第二级排气弹簧故障(DS2)、第二级吸入弹簧故障(SS2)和第二级吸入泄漏(SL2)。
    为了采集两级的振动和压力信号,在两级的顶部垂直安装了加速度计和压力传感器。详细地说,加速计安装在阀盖上,而压力传感器则安装在每个气缸盖的螺纹孔中。与上述信号相比,在感应电动机的a相上安装一个频率响应从直流到1.5kHz的霍尔效应电流传感器来测量该信号时,电流的设置更简单。另外还安装了一个静压传感器,用于在实验过程中连续监测储气罐中的压力。该压力不仅用于关闭驱动感应电机,还用于在预定压力下触发数据采集,该压力从0.0689 MPa(10 psi)开始到0.827 MPa(120 psi),间隔为0.0689 MPa(10 psi)。一旦达到每个预定压力,数据由16位分辨率的ADC系统采集,采样率为57142赫兹。该数据集由4个段组成,每个段包含118833个样品,涵盖了大约15个压缩机工作循环。因此,每种情况下,根据12个预定义压力值收集12个数据集,然后存储到PC机进行分析和分类。
    4结果与讨论
    4.1. 数据预处理、TKEO实现和特征提取
    由于振动信号的非平稳性和噪声性,从振动信号的原始时间波形或其FFT谱中提取的特征不能为故障诊断提供正确的信息。例如,图4a和b显示了吸入弹簧故障状态(SS2)第二阶段的大约四分之一时间波形振动及其FFT谱。可以看出,由于RC的运动而产生的各种瞬态冲击和噪声是可观察到的。在FFT频谱中,主频(7.3hz)及其谐波几乎被掩埋在噪声中,这是一个有待识别的挑战。相反,在由DESA1从相同条件提取的AM信号的时域中,如图5a的时间波形所示,特征影响被突出显示并且噪声几乎被消除。此外,在图5b所示的频谱中,频率7.3 Hz及其谐波被清楚地辨别出来。显然,TKEO无需任何滤波技术就能有效地揭示振动信号的特征,去除噪声。TKEO应用于振动信号的优点是:(1)不需要带通滤波器,避免了对带通滤波器的中心频率和带宽的适当估计;(ii)由于DESA-1算法仅使用两个样本差来计算,因此TKEO的实现非常简单且计算效率高。
    在这里插入图片描述
    在这里插入图片描述
    在提取信号特征之前,首先对数据进行预处理。如实验部分所述,对于每个预定义压力,数据包含4个段,每个段有118833个数据点。因此,为了增加特征集中的样本数,我们将每个数据除以4(一段),从而从每个阀状态获得48个数据样本(12个预定义压力×4)。然后,对振动数据集应用带DESA1算法的TKEO获得其AM信号。对于压力和电流信号,采用信号去噪技术去除测量信号中的随机噪声。这些技术和评价已发表在文献中,例如《Wang、He和Chen比较研究》(2009)和《Postalcioglu、Erkan和Bolat比较研究》(2005)。其中,基于小波变换的去噪方法在计算量小的前提下取得了较好的去噪效果,因此,本文采用小波去噪方法。研究了信号的几个基本函数和多分辨率分解层次。由于去噪只对信号进行平滑处理而不改变信号的主要特征,基本函数对最终分类结果没有影响。最后采用软阈值法、Daubechies最小非对称小波基函数(sym9)和三层小波去噪法对图像进行去噪。然后,从调幅、压力和电流信号中提取统计特征,包括时域的10个特征、频域的3个特征和回归估计的8个特征。表2-4相应地描述了这些特性。在振动和压力信号的情况下,我们得到了一个包含288个样本(6个故障类型×48个数据样本)和42个特征的特征集,这些特征是从两个压缩机级获得的特征数。在电流的情况下,获得288×21的特征集。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    为了提高特征聚类间的分离度,提高诊断精度,降低特征维数,提高计算效率,将广义判别分析(GDA)方法(Baudat&Anouar,2000)应用于所获得的特征集。因此,如图6所示,保留在新空间中的特征集中的特征的数目对于振动是39,对于压力是24,对于电流是11。上述保留特征是基于协方差矩阵的特征值估计的,协方差矩阵只保留非零特征值的特征。通过可视化可以观察到特征在新特征空间中的分布。例如,在图7中直观地示出了不同条件的三个第一特征。可以看出,图7a和图c中的振动(AM信号)和电流的特征相对较好地聚集。只有NOR和SL2(振动情况)以及DS2和SL2(当前情况)的特征之间发生重叠。注意,在相同的条件下,如图7c所示的样本的数目小于48,这是因为多个特征具有导致重叠的相同值。另一方面,在第二阶段,NOR和SL2之间以及SS2和DL2之间的压力特征簇没有很好的分离。一般来说,在分类过程中,重叠会给分类带来困难。在这里插入图片描述
    在这里插入图片描述
    4.2. DBN分类结果

    采用k-fold交叉验证方法将特征集随机划分为训练集和测试集,其中k取4。作为该划分的结果,生成4个子集,其中一个子集(72个样本)用作测试集,并且将其他子集放在一起以形成用于每次迭代中DBN学习的训练集(216个样本)。然后计算所有4个试验的平均误差。预训练中DBN分类器的参数根据信号配置,如表5所示。按照Hinton(2010)的建议,将最小批量大小设置为等于类的数量。在精车过程中,采用随机梯度下降法调整前一过程中最小批量相同的网络权值,学习率取0.01。在预训练和精车时,使用0.9的动量。为了说明DBN的随机性,在交叉验证的每次迭代中,分类过程重复5次,然后对分类结果进行平均。此外,为了说明动态贝叶斯网络在分类中的优越性,还对动态贝叶斯网络和两种著名的分类器进行了精度比较研究,包括在许多应用中比支持向量机(SVM)精度更高的相关向量机(RVM)(Tipping,2001)和bp神经网络(BPNN)。BPNN结构由10个隐藏层和10个神经元组成。该网络通过根据Levenberg–Marquardt优化更新权重和偏差值的函数进行训练。对于RVM分类器,定义为K(xi, xj)=exp(||xi-xj||/2γ2)的RBF核函数,其中C是确定核空间中映射样本的几何结构的核参数,用作本研究中的基本函数,并且设置为0.1。
    在这里插入图片描述
    测试模式下所有分类器的平均精度和标准差如表6所示。通过观察,DBN与其他分类器相比,提供了更好的精度。DBN对振动信号的分类准确率达到99.79%,高于RVM(99.3%)和BPNN(97.78%)。对于压力信号,DBN的平均准确率为97.58%,RVM为97.22%,BPNN为94.44%。与振动信号相比,由于阀门状态之间的特征聚类较差,所有分类器的分类精度都相对较低。对于当前信号,与压力信号相比,所有分类器都取得了更好的性能,其中DBN、RVM和BPNN的准确率分别为99.58%、98.61%和97.08%。然而,振动信号不如振动信号,说明振动信号是本研究中用于阀门故障诊断的较好信号。此外,分类器的标准差相对较小,表明分类精度接近平均值。从结果可以看出,DBN提供了比其他分类器更好的性能。可以说,以动态贝叶斯网络为代表的深度学习方法是机器学习技术的一个发展阶段,它有效地帮助提高了机器故障诊断的准确性。
    5总结与结论
    提出了一种利用感应电机振动、压力、电流三种常用信号进行RC阀门故障诊断的新方法。针对钢筋混凝土振动中经常出现的非平稳现象,采用了一种快速、高效的计算方法TKEO估计信号的振幅包络。针对压力和电流信号,采用基于小波变换的软阈值去噪技术对信号进行去噪。接下来,从这三个信号中提取时域和频域的统计特征。为了最大限度地提高特征集的条件可分性,连续使用GDA将特征映射到一个维数较小的新空间。最后,将特征输入到DBN、RVM和BPNN三个分类器中,对其性能进行评价。结果,DBN对于所有信号都不相等。因此,本文提出的以动态贝叶斯网络为分类器的阀门故障识别方法能够提高阀门故障识别的准确性,具有一定的故障诊断应用价值。

    展开全文
  • 能量算子+信号解调

    千次阅读 多人点赞 2016-12-18 09:29:34
    teager算子 希尔伯特 信号解调

    解调信号,Hilbert是一种有效的方法,但它对信号由要求,需要满足Bedrosian Product Theorem,才不会有大的误差,而且Hilbert变换的计算过程中涉及加窗,也会给结果带来误差。最明显的效应是在非整周期采样情况下,Hilbert变换会带来边缘飞翼,边缘误差很大。

    实际上,实现解调的数学方法是很多的,如能量算子、Mandelstam法、Shekel法、Prony法等,而其中的能量算子法简单使用,能有效克服Hilbert解调的误差。

    这里写图片描述

    知道了这些,既可以编写程序实现瞬时频率与包络的计算了,当然,成熟的算法需要考虑各种细节,如边缘的延拓等,DESA-1的一个简单代码实现如下

    % Discrete Energy Separation Algorithm 1(DESA-1)for estimation purpose on an AM signal.
    
    clc
    
    clear
    
    close all
    
    % 原始信号
    
    k=0.8;
    
    w=2*pi/256;
    
    q=2*pi/12;
    
    n = 1:512;
    
    A = 1+k*cos(w*n);
    
    x = A.*cos(q*n);
    
    x = x(:); % 转化为列向量
    
    % 能量算子计算瞬时频率与包络
    
    y = circshift(x,-1)-x;
    
    ey = y.^2-circshift(y,1).*circshift(y,-1); % Teager算子
    
    ex = x.^2-circshift(x,1).*circshift(x,-1); % Teager算子
    
    w = acos(1-(ey+circshift(ey,1))./(4*ex)); % 瞬时频率
    
    a = sqrt(ex./(1-(1-(ey+circshift(ey,1))./(4*ex)).^2)); % 包络
    
    figure
    
    plot([x,w,a])
    
    legend({'原始信号','瞬时频率','包络'})

    可以看到,包络和瞬时频率都能正确的提取出来,只是没有顾及边缘效应,边端效果较差,但也只是差在几个点上。

    网上查代码,还看到一个三点对称差分能量算子法,其算法思想如下
    这里写图片描述

    对其代码稍作整理后,封装成如下函数

    function [A,f] = DESA(x)
    
    % 三点对称差分能量算子求解包络
    
    % 算法详细描述:
    
    % 2Ψ[x(n)]
    
    % |a(n)|=-------------------------------------
    
    % sqrt( Ψ[ x(n+1)-x(n-1) ] )
    
    phix = DEO3S(x);
    
    phix1 = DEO3S(circshift(x',-1)'-circshift(x',1)');
    
    U = 2*phix;
    
    L = abs(sqrt(phix1));
    
    A=abs(U./L); % 应去除分母为0的点
    
    A(A==inf)=0;
    
    pha = 1-phix1/2./phix;
    
    pha(pha>1 & pha<-1) = 0;
    
    f = 0.5*acos(pha);
    
    end
    
    function f=DEO3S(x)
    
    % 使用传递函数法求解三点对称差分能量算子
    
    % x:行向量
    
    % H(z)=z(1+2*z^-1+z^-2)/4;
    
    Px=Phid(x);
    
    Ns=length(Px);
    
    w=2*pi*(-Ns/2:Ns/2)/Ns;
    
    w=[w(1:Ns/2),w(Ns/2+1:Ns)]; % 去0点
    
    z=exp(1i*w);
    
    Hz=z.*(1+2*z.^-1+z.^-2)/4;
    
    Xz=fft(Px,Ns);
    
    Xz=[Xz(Ns/2+1:Ns),Xz(1:Ns/2)];%重新排列
    
    Yw=Hz.*Xz;
    
    Yw=[Yw(Ns/2+1:Ns),Yw(1:Ns/2)];
    
    f=real(ifft(Yw));
    
    end
    
    function f=Phid(x)
    
    % Teager能量算子:y=x(n)^2-x(n-1)*x(n+1)
    
    x=x';
    
    f=x.^2-circshift(x,1).*circshift(x,-1);
    
    f=f';
    
    end

    对此函数的测试如下

    % function testPDESA
    
    clc
    
    clear
    
    close all
    
    fs=5120;
    
    Ns=2048;
    
    t=(0:Ns-1)/fs;
    
    x2=exp(-5*t).*cos(2*pi*20*t); % 实际包络
    
    x=x2.*sin(2*pi*500*t);
    
    [y,f]=DESA(x); % 能量算子解包络
    
    yhilbert=abs(hilbert(x)); % Hilbert解包络
    
    figure
    
    subplot(2,1,1),
    
    plot(t,[y; yhilbert; x])
    
    title('解包络')
    
    legend('能量算子包络','Hilbert包络','原始数据');
    
    grid on
    
    subplot(2,1,2),
    
    plot(t,[abs(x2)-y;abs(x2)-yhilbert])
    
    grid on
    
    axis([0 0.4 -0.02 0.02]);
    
    legend('能量算子包络误差','Hilbert包络误差');
    
    title('解包络误差')
    
    figure
    
    plot(abs(f)/2/pi*fs)
    
    title('能量算子解调得到的频率')

    可以看到它求解得到的包络和Hilbert得到的包络相差无几,也可以看到能量算子法在一些过零点处有些误差,但还可以容忍,而Hilbert法的边端飞翼就确实太大了(能量算子只在边界一两个点上误差很大,毕竟能量算子中涉及离散差分,差分一次就少一点的信息,故造成边缘点的误差);另外能量算子得到的瞬时频率貌似不照,其实如果用优化算法优化后,效果是可以得到很大提升的。

    实际上,能量算子的实际应用可以利用一个matlab工具箱:hht_toolbox,它是一个希尔伯特黄变换的一个工具箱(不过貌似用的人不多,不如G.Rilling的代码好),里面有计算4个能量算子的函数:

    desa:原始能量算子法

    desa1:DESA-1法

    desa1m:DESA-1法的平滑结果

    desa2:DESA-2法

    代码效果测试如下

    % 测试各种能量算子算法的效果
    
    clc
    
    clear all
    
    close all
    
    ts = 0.001;
    
    N = 200;
    
    fs = 1/ts;
    
    k = 0.8;
    
    t = (0:N-1)*ts;
    
    % 原始信号
    
    fm = 10;
    
    fc = 100;
    
    Am = 1 + k*cos(2*pi*fm*t); % 包络
    
    Am = 2+exp(-10*t).*cos(2*pi*fm*t); % 包络
    
    Ac = cos(2*pi*fc*t);
    
    y = Am.*Ac; % 信号调制
    
    % 包络分析
    
    yh = hilbert(y);
    
    Ah = abs(yh); % 包络的绝对值
    
    Ph = unwrap(angle(yh)); % 包络的相位
    
    fh = diff(Ph)/2/pi; % 包络的瞬时频率,差分代替微分计算
    
    % 能量算子解调
    
    xn = y';
    
    [W,A] = desa(xn, ts);
    
    [W1,A1] = desa1(xn, ts);
    
    [W1m,A1m] = desa1m(xn, ts);
    
    [W2,A2] = desa2(xn, ts);
    
    figure
    
    subplot(211)
    
    plot(t,[Ah',A,A1,A1m,A2,xn])
    
    title('能量算子解调振幅')
    
    legend({'Hilbert包络','desa包络','desa1包络','desa1m包络','desa2包络','原始信号'})
    
    fh(end+1) = fh(end);
    
    subplot(212)
    
    plot(t,[fh'*fs,W,W1,W1m,W2])
    
    title('能量算子解调频率')
    
    legend({'Hilbert频率','desa频率','desa1频率','desa1m频率','desa2频率'})
    
    % ylim([60,80])
    
    figure
    
    plot(t,[Ah'-Am',A-Am',A1-Am',A1m-Am',A2-Am'])
    
    title('能量算子解调振幅的误差')
    
    legend({'Hilbert包络','desa包络','desa1包络','desa1m包络','desa2包络'})
    
    sum(sum((A1-Am').^2))
    
    sum(sum((A1m-Am').^2))
    
    sum(sum((A2-Am').^2))

    可以看到,Hilbert仍然有很大的边缘飞翼效应,无论是包络还是解调频率;desa函数计算的包络和频率误差比较大;另三个函数的计算结果相差无几,且无边缘飞翼,误差也不大,如果非要做个好坏的比较的话,可以从解调的RMS值中看出

    >> sum(sum((A1-Am').^2))
    
    sum(sum((A1m-Am').^2))
    
    sum(sum((A2-Am').^2))
    
    ans =
    
    0.0038
    
    ans =
    
    0.0039
    
    ans =
    
    0.0037

    可以看到误差最小的是desa2,其次是desa1,最后是desa1-m,而之所以desa1-m要比desa1误差要大,是前者是对后的一个低通滤波,这相当于一个误差,但前者的效果上看会更平滑。

    从上面可以看到能量算子的厉害之处,其实能量算子还可以再很多地方使用,具体可以参考文献《Signal processing using the Teager Energy Operator and other nonlinear operators》。

    原文出处

    展开全文
  • 拟议的能量测度(我们称为包络导数算子(EDO))定义为 Γ[x(n)] = y²(n) + H[y(n)]² 其中y(n)是x(n)的导数,使用中心有限差分方程y(n)= [x(n + 1)-x(n-1)] / 2估算,而H [·]是x(n)的离散希尔伯特...
  • 为了准确定位电压暂降扰动和精确测量暂降幅值, 提出了一种将新型Teager能量算子(NTEO)和有效值算法结合进行暂降检测的新方法。通过引入分辨率参数i对Teager能量算子(TEO)进行改善, 得到抗噪性能更优越的NTEO算法, ...
  • 为了解决多径干扰对无线定位精度的影响,该文在传统的窄带相关技术的基础上,利用TK算子对其进行改进。改进后的技术在不过多地增加计算负担的情况下,不仅保持了窄带相关技术对于长时延多径信号抑制的功能,而且还...

空空如也

空空如也

1 2 3 4 5
收藏数 82
精华内容 32
关键字:

teager能量算子