故障診斷 | 信號(hào)降噪算法合集,你學(xué)會(huì)了嗎?
前言
在軸承故障信號(hào)中既包含軸承轉(zhuǎn)動(dòng)聲音,又包含場(chǎng)景中的其他噪聲信息。如何聚焦軸承轉(zhuǎn)動(dòng)的時(shí)域特征和頻域特征,降低場(chǎng)景噪聲的干擾,是我們需要解決的問題。本期為大家介紹幾種常用且高效的信號(hào)降噪算法:
(1)離散小波變換(DWT):通過將信號(hào)分解到不同的頻帶,有效地分離出噪聲和故障特征。
(2)經(jīng)驗(yàn)?zāi)B(tài)分解(EMD):自適應(yīng)地將信號(hào)分解為一系列本征模態(tài)函數(shù)(IMF),每個(gè)IMF代表不同尺度的成分。
(3)經(jīng)驗(yàn)小波變換(EWT):結(jié)合小波變換和EMD的優(yōu)勢(shì),自適應(yīng)地選擇小波基函數(shù)來分解信號(hào)。
(4)自編碼器(Autoencoder):一種無監(jiān)督學(xué)習(xí)方法,通過神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)信號(hào)的壓縮表示和重構(gòu),達(dá)到降噪效果。
● 數(shù)據(jù)集:CWRU西儲(chǔ)大學(xué)軸承數(shù)據(jù)集
● 環(huán)境框架:python 3.9 pytorch 1.8 及其以上版本均可運(yùn)行
● 使用對(duì)象:模型論文需求、畢業(yè)設(shè)計(jì)需求者
● 代碼保證:代碼注釋詳細(xì)、即拿即可跑通。
1.噪聲可視化
1.1 導(dǎo)入數(shù)據(jù)
參考之前的文章,讀取凱斯西儲(chǔ)大學(xué)軸承數(shù)據(jù):
1.2 添加高斯白噪聲
添加信噪比SNR為5db的噪聲
2.離散小波變換(DWT)降噪
2.1 處理步驟
(1)選擇小波和分解層數(shù):我們選擇了db8小波,并計(jì)算了分解層數(shù)。
(2)DWT分解:使用wavedec函數(shù)對(duì)信號(hào)進(jìn)行多層次分解。
(3)閾值處理:計(jì)算閾值并對(duì)細(xì)節(jié)系數(shù)進(jìn)行軟閾值處理,以去除噪聲。
(4)信號(hào)重構(gòu):使用處理后的系數(shù)進(jìn)行信號(hào)重構(gòu)。
(5)繪圖:繪制原始信號(hào)、帶噪信號(hào)和降噪后的信號(hào)進(jìn)行比較。
注意事項(xiàng):
- 選擇合適的小波基函數(shù)和分解層數(shù)對(duì)降噪效果有很大影響,需要根據(jù)具體信號(hào)特性進(jìn)行調(diào)整。
- 閾值處理的方法有多種,可以根據(jù)實(shí)際情況選擇不同的閾值計(jì)算方法和處理方式(如軟閾值或硬閾值)。
2.2 降噪效果
不同故障信號(hào)添加 5db 噪聲對(duì)比:
正常信號(hào)分別添加 -5db、-10db、5db 對(duì)比:
3.經(jīng)驗(yàn)?zāi)B(tài)分解(EMD)
3.1 處理步驟
(1)初始化EMD對(duì)象:創(chuàng)建一個(gè)EMD對(duì)象,用于執(zhí)行經(jīng)驗(yàn)?zāi)B(tài)分解。
(2)進(jìn)行EMD分解:使用emd.emd方法對(duì)帶噪聲信號(hào)進(jìn)行分解,得到一系列本征模態(tài)函數(shù)(IMFs)。
(3)選擇合適的IMF進(jìn)行重構(gòu):假設(shè)第0個(gè)IMF主要是噪聲,去除它后重構(gòu)信號(hào)。實(shí)際應(yīng)用中需要根據(jù)具體情況調(diào)整選擇的IMF。
(4)繪圖:繪制原始信號(hào)、帶噪信號(hào)、IMF以及降噪后的信號(hào)進(jìn)行比較。
注意事項(xiàng)
- IMF的選擇:選擇哪些IMF進(jìn)行重構(gòu)需要根據(jù)具體信號(hào)特性和應(yīng)用需求來確定。通常,較低頻的IMF包含主要的信號(hào)成分,而高頻的IMF可能更多地包含噪聲。
3.2 降噪效果
不同故障信號(hào)添加 5db 噪聲對(duì)比:
正常信號(hào)分別添加 -5db、-10db、5db 對(duì)比:
4.經(jīng)驗(yàn)小波變換(EWT)降噪
4.1 處理步驟
(1)邊界計(jì)算:首先計(jì)算信號(hào)的傅里葉變換,然后找出頻譜中的局部最大值作為邊界。
(2)EWT分解:ewt函數(shù)執(zhí)行經(jīng)驗(yàn)小波變換。它計(jì)算信號(hào)的傅里葉變換,然后應(yīng)用濾波器組,得到一系列的EWT系數(shù)。
(3)信號(hào)重構(gòu):通過將所有EWT系數(shù)相加(去掉第一個(gè)主要噪聲成分的系數(shù)),重構(gòu)降噪后的信號(hào)。
4.2 降噪效果
不同故障信號(hào)添加 5db 噪聲對(duì)比:
5 自編碼器(Autoencoder)降噪
5.1 處理步驟
(1)數(shù)據(jù)準(zhǔn)備:將信號(hào)轉(zhuǎn)換為PyTorch張量,并創(chuàng)建數(shù)據(jù)集和數(shù)據(jù)加載器。
(2)定義自編碼器模型:
- 使用PyTorch的nn.Module定義自編碼器模型,包括編碼器和解碼器。
- 編碼器:將輸入信號(hào)壓縮到低維空間(encoding_dim),使用ReLU激活函數(shù)。
- 解碼器:將編碼后的信號(hào)重構(gòu)回原始維度。
(3)初始化模型、損失函數(shù)和優(yōu)化器:
(4)降噪信號(hào)重構(gòu):使用訓(xùn)練好的自編碼器對(duì)帶噪信號(hào)進(jìn)行重構(gòu),得到降噪后的信號(hào)。
(5)繪圖:繪制原始信號(hào)、帶噪信號(hào)和降噪后的信號(hào)進(jìn)行比較。
注意事項(xiàng)
- 編碼維度:編碼維度(encoding_dim)控制了信號(hào)的壓縮程度。較小的編碼維度可能導(dǎo)致信息丟失,較大的編碼維度可能無法有效去除噪聲。可以根據(jù)具體應(yīng)用調(diào)整該參數(shù)。
- 訓(xùn)練數(shù)據(jù):自編碼器的性能依賴于訓(xùn)練數(shù)據(jù)的質(zhì)量和數(shù)量。確保訓(xùn)練數(shù)據(jù)覆蓋各種可能的信號(hào)特征。
- 模型復(fù)雜度:可以嘗試增加模型的層數(shù)和神經(jīng)元數(shù)量,以提高模型的表示能力。
5.2 降噪效果
不同故障信號(hào)添加 5db 噪聲對(duì)比:
圖片
本文轉(zhuǎn)載自 ??建模先鋒??,作者: 小蝸愛建模
