故障诊断 | 信号降噪算法合集,你学会了吗?

发布于 2025-1-3 12:04
浏览
0收藏

前言

在轴承故障信号中既包含轴承转动声音,又包含场景中的其他噪声信息。如何聚焦轴承转动的时域特征和频域特征,降低场景噪声的干扰,是我们需要解决的问题。本期为大家介绍几种常用且高效的信号降噪算法:

(1)离散小波变换(DWT):通过将信号分解到不同的频带,有效地分离出噪声和故障特征。

(2)经验模态分解(EMD):自适应地将信号分解为一系列本征模态函数(IMF),每个IMF代表不同尺度的成分。

(3)经验小波变换(EWT):结合小波变换和EMD的优势,自适应地选择小波基函数来分解信号。

(4)自编码器(Autoencoder):一种无监督学习方法,通过神经网络学习信号的压缩表示和重构,达到降噪效果。

● 数据集:CWRU西储大学轴承数据集

● 环境框架:python 3.9  pytorch 1.8 及其以上版本均可运行

● 使用对象:模型论文需求、毕业设计需求者

● 代码保证:代码注释详细、即拿即可跑通。

1.噪声可视化

1.1 导入数据

参考之前的文章,读取凯斯西储大学轴承数据:

故障诊断 | 信号降噪算法合集,你学会了吗?-AI.x社区

1.2 添加高斯白噪声

添加信噪比SNR为5db的噪声

故障诊断 | 信号降噪算法合集,你学会了吗?-AI.x社区

故障诊断 | 信号降噪算法合集,你学会了吗?-AI.x社区

2.离散小波变换(DWT)降噪

2.1 处理步骤

(1)选择小波和分解层数:我们选择了db8小波,并计算了分解层数。

(2)DWT分解:使用wavedec函数对信号进行多层次分解。

(3)阈值处理:计算阈值并对细节系数进行软阈值处理,以去除噪声。

(4)信号重构:使用处理后的系数进行信号重构。

(5)绘图:绘制原始信号、带噪信号和降噪后的信号进行比较。

注意事项:

  • 选择合适的小波基函数和分解层数对降噪效果有很大影响,需要根据具体信号特性进行调整。
  • 阈值处理的方法有多种,可以根据实际情况选择不同的阈值计算方法和处理方式(如软阈值或硬阈值)。

2.2 降噪效果

不同故障信号添加 5db 噪声对比:

故障诊断 | 信号降噪算法合集,你学会了吗?-AI.x社区

正常信号分别添加 -5db、-10db、5db  对比:

故障诊断 | 信号降噪算法合集,你学会了吗?-AI.x社区

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 噪声对比:

故障诊断 | 信号降噪算法合集,你学会了吗?-AI.x社区

正常信号分别添加 -5db、-10db、5db  对比:

故障诊断 | 信号降噪算法合集,你学会了吗?-AI.x社区

4.经验小波变换(EWT)降噪

4.1 处理步骤

(1)边界计算:首先计算信号的傅里叶变换,然后找出频谱中的局部最大值作为边界。

(2)EWT分解:ewt函数执行经验小波变换。它计算信号的傅里叶变换,然后应用滤波器组,得到一系列的EWT系数。

(3)信号重构:通过将所有EWT系数相加(去掉第一个主要噪声成分的系数),重构降噪后的信号。

4.2 降噪效果

故障诊断 | 信号降噪算法合集,你学会了吗?-AI.x社区

不同故障信号添加 5db 噪声对比:

故障诊断 | 信号降噪算法合集,你学会了吗?-AI.x社区

故障诊断 | 信号降噪算法合集,你学会了吗?-AI.x社区

5 自编码器(Autoencoder)降噪

5.1 处理步骤

(1)数据准备:将信号转换为PyTorch张量,并创建数据集和数据加载器。

(2)定义自编码器模型:

  • 使用PyTorch的nn.Module定义自编码器模型,包括编码器和解码器。
  • 编码器:将输入信号压缩到低维空间(encoding_dim),使用ReLU激活函数。
  • 解码器:将编码后的信号重构回原始维度。

(3)初始化模型、损失函数和优化器:

(4)降噪信号重构:使用训练好的自编码器对带噪信号进行重构,得到降噪后的信号。

(5)绘图:绘制原始信号、带噪信号和降噪后的信号进行比较。

注意事项

  • 编码维度:编码维度(encoding_dim)控制了信号的压缩程度。较小的编码维度可能导致信息丢失,较大的编码维度可能无法有效去除噪声。可以根据具体应用调整该参数。
  • 训练数据:自编码器的性能依赖于训练数据的质量和数量。确保训练数据覆盖各种可能的信号特征。
  • 模型复杂度:可以尝试增加模型的层数和神经元数量,以提高模型的表示能力。

5.2 降噪效果

不同故障信号添加 5db 噪声对比:

故障诊断 | 信号降噪算法合集,你学会了吗?-AI.x社区图片

本文转载自 建模先锋​,作者: 小蜗爱建模

已于2025-1-3 14:54:32修改
收藏
回复
举报
回复
相关推荐