往期精彩内容:
Python-凯斯西储大学(CWRU)轴承数据解读与分类处理
基于FFT + CNN - BiGRU-Attention 时域、频域特征注意力融合的轴承故障识别模型-CSDN博客
基于FFT + CNN - Transformer 时域、频域特征融合的轴承故障识别模型-CSDN博客
Python轴承故障诊断 (11)基于VMD+CNN-BiGRU-Attenion的故障分类-CSDN博客
Python轴承故障诊断 (13)基于故障信号特征提取的超强机器学习识别模型-CSDN博客
Python轴承故障诊断 (14)高创新故障识别模型-CSDN博客
Python轴承故障诊断 (15)基于CNN-Transformer的一维故障信号识别模型-CSDN博客
Python轴承故障诊断 (16)高创新故障识别模型(二)-CSDN博客
轴承故障全家桶更新 | 基于时频图像的分类算法-CSDN博客
Python轴承故障诊断 (17)基于TCN-CNN并行的一维故障信号识别模型-CSDN博客
独家原创 | SCI 1区 高创新轴承故障诊断模型!-CSDN博客
基于 GADF+Swin-CNN-GAM 的高创新轴承故障诊断模型-CSDN博客
Python轴承故障诊断 (18)基于CNN-TCN-Attention的创新诊断模型-CSDN博客
注意力魔改 | 超强轴承故障诊断模型!-CSDN博客
轴承故障全家桶更新 | 基于VGG16的时频图像分类算法-CSDN博客
轴承故障全家桶更新 | CNN、LSTM、Transformer、TCN、串行、并行模型、时频图像、EMD分解等集合都在这里-CSDN博客
Python轴承故障诊断 (19)基于Transformer-BiLSTM的创新诊断模型-CSDN博客
Python轴承故障诊断 (20)高创新故障识别模型(三)-CSDN博客
视觉顶会论文 | 基于Swin Transformer的轴承故障诊断-CSDN博客
Python轴承故障诊断 | 多尺度特征交叉注意力融合模型-CSDN博客
SHAP 模型可视化 + 参数搜索策略在轴承故障诊断中的应用-CSDN博客
速发论文 | 基于 2D-SWinTransformer+1D-CNN-SENet并行故障诊断模型-CSDN博客
Python轴承故障诊断 (21)基于VMD-CNN-BiTCN的创新诊断模型-CSDN博客
1DCNN-2DResNet并行故障诊断模型-CSDN博客
基于改进1D-VGG模型的轴承故障诊断和t-SNE可视化-CSDN博客
基于K-NN + GCN的轴承故障诊断模型-CSDN博客
故障诊断 | 创新模型更新:基于SSA-CNN-Transformer诊断模型-CSDN博客
独家首发 | 基于 2D-SwinTransformer + BiGRU-GlobalAttention的并行故障诊断模型-CSDN博客
位置编码祛魅 | 详解Transformer中位置编码Positional Encoding-CSDN博客
创新点 | 基于快速傅里叶卷积(FFC) 的故障诊断模型-CSDN博客
代码开源! | 变工况下的域对抗图卷积网络故障诊断-CSDN博客
超强 !顶会创新融合!基于 2D-SWinTransformer 的并行分类网络-CSDN博客
多模态-故障诊断 | 大核卷积开启视觉新纪元!-CSDN博客
超强!一区直接写!基于SSA+Informer-SENet故障诊断模型-CSDN博客
Transformer结构优势 ,How Much Attention Do You Need?-CSDN博客
故障诊断 | 一个小创新:特征提取+KAN分类-CSDN博客
前言
在轴承故障信号中既包含轴承转动声音,又包含场景中的其他噪声信息。如何聚焦轴承转动的时域特征和频域特征,降低场景噪声的干扰,是我们需要解决的问题。本期为大家介绍几种常用且高效的信号降噪算法:
(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 噪声对比:
6 代码、数据整理如下:
点击下方卡片获取代码!