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