0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python軸承故障診斷之經(jīng)驗模態(tài)分解EMD原理介紹

冬至子 ? 來源:建模先鋒 ? 作者:小蝸愛建模 ? 2023-12-12 16:28 ? 次閱讀

1 經(jīng)驗模態(tài)分解EMD原理介紹

1.1 EMD概述

經(jīng)驗模態(tài)分解(Empirical Mode Decomposition,EMD)方法是一種自適應(yīng)信號時頻處理方法,特別適用于非線性、非平穩(wěn)信號的分析處理[1]。其本質(zhì)是一種對信號進行分解的方法,將信號分解為各個相互獨立的成分的疊加,依據(jù)數(shù)據(jù)自身的時間尺度特征來進行信號分解,具備自適應(yīng)性。

EMD的優(yōu)點在于它是一種自適應(yīng)的、數(shù)據(jù)驅(qū)動的分解方法,不需要預先假設(shè)信號的分布或結(jié)構(gòu)。這使得它適用于處理各種類型的信號,包括非線性和非平穩(wěn)信號。

EMD 認為任何一個復雜序列都是由多個單頻率信號疊加而成,因此可以分解成若干個 本征模態(tài)函數(shù)(Intrinsic Mode Functions, IMF),IMF 的各個分量即代表了原始信號中的各頻 率分量,并按照從高頻到低頻的順序依次排列,這也是 IMF 的物理含義[2]。

1.2 本征模態(tài)函數(shù)IMF

本征模態(tài)函數(shù)(Intrinsic Mode Functions, IMF)就是原始信號被 EMD 分解之后得到的各層信號分量。任何信號都可以拆分成若干個 IMF 之和。IMF 有兩個假設(shè)條件:

  • 在整個數(shù)據(jù)段內(nèi),極值點的個數(shù)和過零點的個數(shù)必須相等或相差最多不能超過一 個;
  • 在任意時刻,由局部極大值點形成的上包絡(luò)線和由局部極小值點形成的下包絡(luò)線 的平均值為零,即上、下包絡(luò)線相對于時間軸局部對稱。

對于上述的條件理解如下:

第一,圖線要反復跨越 x 軸,比如:

圖片

反復跨越 x 軸

而不能像下面這樣某次穿過零點后出現(xiàn)多個極點:

圖片

某次穿過零點后出現(xiàn)多個極點

第二,上下包絡(luò)線要對稱,比如:

圖片

上下包絡(luò)線對稱

而不能像如下這樣,上下包絡(luò)線不對稱

圖片

1.3 EMD 分解的基本假設(shè)

  • 信號至少有兩個極值點:一個極大值點和一個極小值點;
  • 特征時間尺度由極值之間的時間間隔定義;
  • 如果數(shù)據(jù)完全沒有極值,但只包含拐點,那么可以一次或多次劃分來揭示極值點,最終的結(jié)果可以通過積分得到

2 EMD分解的基本原理和步驟

EMD的分解過程是一個迭代的過程。首先,對原始信號進行極值點的提取,然后通過連接極值點的均值得到第一輪的近似IMF(也叫做“本征模態(tài)”)。接下來,將這個近似IMF從原始信號中減去,得到一個新的信號,然后對這個新信號再次進行極值點提取和均值連接,得到第二輪的近似IMF。如此往復,直到得到的近似IMF滿足某種停止準則。

對于原始信號 X(t)

圖片

第一步,極值點提?。?/p>

從待分解的信號中識別局部極值點,包括局部極大值和局部極小值。極值點是信號中的局部特征,能夠幫助刻畫信號的振蕩特性。

圖片

第二步,構(gòu)建上下包絡(luò)線:

通過連接相鄰的局部極大值和局部極小值,構(gòu)建信號的上包絡(luò)線和下包絡(luò)線。上包絡(luò)線 U(t) 由局部極大值連接而成,下包絡(luò)線 L(t) 由局部極小值連接而成。包絡(luò)線用于描述信號的振蕩范圍。

圖片

第三步,提取均值函數(shù):

計算上包絡(luò)線和下包絡(luò)線的平均值,得到均值函數(shù) m1。將原始信號減去均值函數(shù),得到一維信號 h1。

m1 = ( U(t) + L(t) ) / 2

h1 = X(t) - m1

圖片

第四步,迭代分解:

對減去均值函數(shù)后的一維信號 h1,重復步驟1-3的過程,直到得到的剩余信號為“單調(diào)信號”,或者滿足IMF的兩個假設(shè)條件。迭代k次的IMF為

hk = h(k-1) - mk

第五步,確定本征模態(tài)函數(shù)(IMF):

在每一次迭代中,通過極值點提取、構(gòu)建包絡(luò)線等步驟,得到的剩余信號被稱為一個本征模態(tài)函數(shù)(IMF)。IMF具有局部特征,并且代表了信號在不同尺度上的振蕩模式。使用上述方法得到的第一個IMF記為c1, 然后將c1從原始信號中分離,得到

r1 = X(t) - c1

由于r1仍然包含大量信息,因此將r1作為新的原始信號,再通過步驟1-4的分析,可以得到IMF2,以此類推,得到

r1 - c2 = r2,... ..., r(n-1) -cn = rn

當cn或rn小于某一設(shè)定值,或者得到的剩余信號為“單調(diào)信號”,無法提取更多的IMF時,迭代終止,得到最終的分解結(jié)果為:

圖片

圖片

第六步,重構(gòu)信號:

將得到的IMF函數(shù)進行逐個提取,直到無法再得到新的IMF為止。最終得到的IMF函數(shù)可以被看作是信號在不同時間尺度上的振蕩模式,它們的組合可以重構(gòu)原始信號。

這些基本步驟構(gòu)成了EMD方法的核心流程,通過這些步驟,EMD可以將復雜的信號分解成不同尺度和頻率的本征模態(tài)函數(shù),從而揭示信號的局部特征和振蕩模式。

3 基于Python的EMD實現(xiàn)

在 Python 中,使用 PyEMD 庫來實現(xiàn)經(jīng)驗模態(tài)分解(EMD)

2.1 代碼示例

import numpy as np
import matplotlib.pyplot as plt
from PyEMD import EMD


# 生成一個示例信號
t = np.linspace(0, 1, 1000)
s = np.sin(11*2*np.pi*t*t) + 6*t*t


# 創(chuàng)建 EMD 對象
emd = EMD()


# 對信號進行經(jīng)驗模態(tài)分解
IMFs = emd(s)


# 繪制原始信號和每個本征模態(tài)函數(shù)(IMF)
plt.figure(figsize=(15,10))
plt.subplot(len(IMFs)+1, 1, 1)
plt.plot(t, s, 'r')
plt.title("Original signal")


for num, imf in enumerate(IMFs):
    plt.subplot(len(IMFs)+1, 1, num+2)
    plt.plot(t, imf)
    plt.title("IMF "+str(num+1))


plt.show()

圖片

2.2 軸承故障數(shù)據(jù)的分解

選擇 0.021英寸滾珠故障信號數(shù)據(jù)來做EMD分解

2.2.1 凱斯西儲大學軸承數(shù)據(jù)的加載

第一步,導入包,讀取數(shù)據(jù)

import numpy as np
from scipy.io import loadmat
import matplotlib.pyplot as plt
import matplotlib
matplotlib.rc("font", family='Microsoft YaHei')


# 讀取MAT文件
data = loadmat('21_2.mat') # 0.021英寸 滾珠
# 注意,讀取出來的data是字典格式,可以通過函數(shù)type(data)查看。

第二步,數(shù)據(jù)集中讀取 驅(qū)動端加速度數(shù)據(jù),取一個長度為1024的信號進行后續(xù)觀察和實驗

# DE - drive end accelerometer data 驅(qū)動端加速度數(shù)據(jù)
data_list = data['X222_DE_time'].reshape(-1)
# 劃窗取值(大多數(shù)窗口大小為1024)
data_list = data_list3[0:1024]
#  進行數(shù)據(jù)可視化
plt.figure(figsize=(20,10))
plt.plot(data_list)
plt.title("滾珠")
plt.show()

圖片

2.2.2 滾珠故障信號EMD分解

import numpy as np
import matplotlib.pyplot as plt
from PyEMD import EMD


t = np.linspace(0, 1, 1024)
data = np.array(data_list)
# 創(chuàng)建 EMD 對象
emd = EMD()


# 對信號進行經(jīng)驗模態(tài)分解
IMFs = emd(data)


# 繪制原始信號和每個本征模態(tài)函數(shù)(IMF)
plt.figure(figsize=(15,10))
plt.subplot(len(IMFs)+1, 1, 1)
plt.plot(t, data, 'r')
plt.title("Original signal", fontsize=10)


for num, imf in enumerate(IMFs):
    plt.subplot(len(IMFs)+1, 1, num+2)
    plt.plot(t, imf)
    plt.title("IMF "+str(num+1), fontsize=10)
    # 增加第一排圖和第二排圖之間的垂直間距
plt.subplots_adjust(hspace=0.4, wspace=0.2)
plt.show()

圖片

2.3 信號分量的處理

通過經(jīng)驗模態(tài)分解(EMD)得到了信號的分量,可以進行許多不同的分析和處理操作,以下是一些常見的對分量的利用方向:

(1)信號重構(gòu):將分解得到的各個本征模態(tài)函數(shù)(IMF)相加,可以重構(gòu)原始信號。這可以用于驗證分解的效果,或者用于信號的重建和恢復。

(2)去噪:對于復雜的信號,可能存在噪聲或干擾成分。通過分析各個IMF的頻率和振幅,可以識別和去除信號中的噪聲成分。

(3)頻率分析:分析每個IMF的頻率成分,可以幫助理解信號在不同頻率上的振蕩特性,從而揭示信號的頻域特征。

(4)特征提取:每個IMF代表了信號的局部特征和振蕩模式,可以用于提取信號的特征,并進一步應(yīng)用于機器學習或模式識別任務(wù)中。

(5)信號預測:通過對分解得到的各個IMF進行分析,可以探索信號的未來趨勢和發(fā)展模式,從而用于信號的預測和預測建模。

(6)模式識別:分析每個IMF的時域和頻域特征,可以幫助對信號進行模式識別和分類,用于識別信號中的不同模式和特征。

(7)異常檢測:通過分析每個IMF的振幅和頻率特征,可以用于探測信號中的異常或突發(fā)事件,從而用于異常檢測和故障診斷。

在得到了信號的分量之后,可以根據(jù)具體的應(yīng)用需求選擇合適的分析和處理方法,以實現(xiàn)對信號的深入理解、特征提取和應(yīng)用。對于后續(xù)的研究,主要利用IMF分類來對故障信號做模式識別,即故障分類。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 信號處理
    +關(guān)注

    關(guān)注

    48

    文章

    1029

    瀏覽量

    103286
  • EMD
    EMD
    +關(guān)注

    關(guān)注

    1

    文章

    43

    瀏覽量

    20041
  • 機器學習
    +關(guān)注

    關(guān)注

    66

    文章

    8418

    瀏覽量

    132659
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84695
  • 頻率分析
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    4961
收藏 人收藏

    評論

    相關(guān)推薦

    Python軸承故障診斷—基于EMD-CNN的故障分類

    很多同學安裝失敗,不是pip install EMD,也不是pip install PyEMD, 如果 pip list 中 已經(jīng)有 emd,emd-signal,pyemd包的存在,要先 pip uninstall 移除相關(guān)包
    的頭像 發(fā)表于 12-12 16:41 ?1796次閱讀
    <b class='flag-5'>Python</b><b class='flag-5'>軸承</b><b class='flag-5'>故障診斷</b>—基于<b class='flag-5'>EMD</b>-CNN的<b class='flag-5'>故障</b>分類

    基于labview的軸承故障診斷與健康監(jiān)測

    畢S做基于labview的軸承故障診斷與健康監(jiān)測,但是感覺無從下手,沒有實物進行數(shù)據(jù)采集,想來也只能模擬采集振動信號,但這個振動信號又該如何產(chǎn)生,看網(wǎng)上有凱斯西儲大學軸承數(shù)據(jù),但又不知如何利用,,求教各位labview前輩大佬給
    發(fā)表于 03-18 23:33

    經(jīng)驗模態(tài)分解

    各位大神,誰能支持基于labview編程的經(jīng)驗模態(tài)分解程序,感謝各位的大神。江湖救急呀
    發(fā)表于 12-02 20:23

    基于DSP+MCU的列車滾動軸承故障診斷系統(tǒng)研究

    ,對于列車的安全有著重大的影響。因此,開展列車滾動軸承故障診斷的研究對避免重大事故、促進經(jīng)濟發(fā)展具有相當大的意義。
    發(fā)表于 07-09 06:30

    電機軸承故障診斷與分析

    很多工程師都在網(wǎng)上向我咨詢電機軸承故障診斷與分析的問題。面對五花八門的問題,有時候我可以根據(jù)一些信息進行判斷,有時候什么信息也沒有,這樣的情況下我的所謂判斷只能是猜測,恐怕距離真相,也十分遙遠。大家
    發(fā)表于 09-01 09:01

    葉片的故障診斷模態(tài)分析

    葉片的故障診斷模態(tài)分析葉片結(jié)構(gòu)簡述:汽輪機葉片是汽輪機的關(guān)鍵部件,它的加工量占總加工量的35%,典型的葉片結(jié)構(gòu)和在葉輪上的安裝位置:葉片損壞形式:損壞(報
    發(fā)表于 12-13 15:51 ?10次下載

    滾動軸承故障診斷的實用技巧

      摘要:本文主要介紹滾動軸承區(qū)別于實驗室診斷的生產(chǎn)實用技巧。關(guān)鍵詞:滾動軸承故障診斷、振動分析、實用技巧滾動
    發(fā)表于 10-29 14:44 ?1609次閱讀

    基于EMD和SVM的柴油機氣閥故障診斷

    針對 柴油機 振動信號的非平穩(wěn)特性和在現(xiàn)實條件下難以獲得大量故障樣本的實際情況,提出了一種經(jīng)驗模式分解和支持向量機相結(jié)合的故障診斷方法。運用經(jīng)驗
    發(fā)表于 07-27 16:42 ?40次下載
    基于<b class='flag-5'>EMD</b>和SVM的柴油機氣閥<b class='flag-5'>故障診斷</b>

    基于EMD與Duffing振子的風機軸承早期故障診斷研究

    基于EMD與Duffing振子的風機軸承早期故障診斷研究_呂躍剛
    發(fā)表于 01-02 15:36 ?2次下載

    基于CUDA加速的高速振動信號故障診斷方法

    為解決傳統(tǒng)高鐵振動信號故障診斷方法速度慢、難以滿足實時處理的要求,提出一種基于計算統(tǒng)一設(shè)備架構(gòu)( CUDA)加速的高鐵振動信號故障診斷方法。首先利用CUDA架構(gòu)對高鐵數(shù)據(jù)進行經(jīng)驗模態(tài)
    發(fā)表于 01-02 16:17 ?3次下載
    基于CUDA加速的高速振動信號<b class='flag-5'>故障診斷</b>方法

    軸承故障診斷方法

    )的故障診斷方法。該方法將數(shù)字圖像處理的頻率分辨率方法與LMD相結(jié)合,首先確定振動信號中所有局部極值點的頻率分辨率,將振動信號分為低頻率分辨率區(qū)域和高頻率分辨率區(qū)域;然后對高頻率分辨率區(qū)域進行LMD分解,可得若干乘積函數(shù)(PF)分量;最后
    發(fā)表于 01-04 16:56 ?0次下載
    <b class='flag-5'>軸承</b><b class='flag-5'>故障診斷</b>方法

    PMSM局部退磁故障診斷

    模態(tài)分解EMD)于一體,基于分形維數(shù)的永磁體局部退磁故障診斷方法。最后,通過PMSM驅(qū)動系統(tǒng)穩(wěn)態(tài)和動態(tài)運行工況對所提出的永磁體局部退磁故障診斷
    發(fā)表于 02-10 10:12 ?1次下載

    基于變分模態(tài)分解優(yōu)化的軸承故障診斷

    為解決變分模態(tài)分解方法在提取齒輪箱滾動軸承故障特征頻率時受模態(tài)個數(shù)和懲罰項系數(shù)影響的問題,提出了種基于人工魚群算法優(yōu)化變分
    發(fā)表于 06-01 10:27 ?6次下載

    基于經(jīng)驗模態(tài)分解等的齒輪故障診斷分析

    基于經(jīng)驗模態(tài)分解等的齒輪故障診斷分析
    發(fā)表于 06-22 11:09 ?16次下載

    模態(tài)分解合集matlab代碼

    ?Decomposition)TVF-EMD(時變?yōu)V波的經(jīng)驗模態(tài)分解,Time-Varying?Filtered?Empirical?Mode?Decomposition)EEMD(集
    發(fā)表于 12-20 17:36 ?1次下載