基于声振信号特征融合的轴承故障识别【附代码】
✅博主简介:擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导,毕业论文、期刊论文经验交流。
✅ 如需沟通交流,扫描文章底部二维码。
(1)自适应降噪与三轴振动融合预处理:针对声音信号信噪比低的问题,采用互补自适应噪声集合经验模态分解,将信号分解为IMFs,基于最大相关最小冗余算法和皮尔逊相关系数选择有效模态,剔除噪声主导模态。对于三轴振动信号,利用多元局部特征尺度分解将其同步分解为一系列多元内禀尺度分量,选择能量最大的分量重构三轴融合信号,增强了故障特征。预处理后,声音信号和融合振动信号的信噪比分别提高了8dB和5dB。
(2)双路CNN与Adaboost融合诊断:提出一种声振特征融合框架。首先对齐声音和振动信号的时间轴(通过互相关估计时延),然后分别用两路CNN提取各自的深层特征,将特征向量拼接后输入Adaboost迭代分类器。Adaboost通过调整每轮样本权重,训练多个弱分类器,最终组合为强分类器。在自建轴承数据集上,该方法诊断准确率达到94.5%,高于仅用声音(81%)或仅用振动(87%)。尤其在强噪声背景下,融合方法的优势更为突出。
(3)域对抗网络提取共有特征抑制负迁移:针对强干扰环境下声振融合出现负迁移的问题,引入域对抗网络。设计特征提取器从声音和振动中提取共有特征,同时加入域判别器区分模态来源,对抗训练使提取器忽略模态特有噪声。在共有特征上叠加通道注意力模块和BiLSTM,进一步增强时态敏感信息。实验表明,该方法在强背景噪声下准确率稳定在98%以上,有效抑制了单一模态过拟合导致的性能下降。
import numpy as np from PyEMD import CEEMDAN from sklearn.feature_selection import mRMR import torch.nn as nn import torch # 自适应降噪 def adaptive_denoise(signal, fs): ceemdan = CEEMDAN() imfs = ceemdan(signal) # 计算每个IMF与原始信号的皮尔逊相关系数 corrs = [np.corrcoef(signal, imf)[0,1] for imf in imfs] # 选择相关系数大于阈值的IMF selected = [imf for imf, c in zip(imfs, corrs) if c > 0.3] return np.sum(selected, axis=0) # 多元局部特征尺度分解(简化) def multivariate_lcd(signals_3d): # 输入三个方向振动信号,输出融合信号 return np.mean(signals_3d, axis=0) # 双路CNN + Adaboost(示意) class SimpleCNN(nn.Module): def __init__(self): super().__init__() self.conv = nn.Sequential(nn.Conv1d(1, 16, 3), nn.ReLU(), nn.AdaptiveAvgPool1d(32)) self.fc = nn.Linear(16*32, 64) def forward(self, x): x = self.conv(x) return self.fc(x.view(x.size(0), -1)) # 域对抗网络 class DomainAdversarialNet: def __init__(self): self.feature_extractor = SimpleCNN() self.domain_classifier = nn.Linear(64, 2) self.label_classifier = nn.Linear(64, 3) def train(self, source_loader, target_loader): # 对抗训练循环 pass # 自监督训练 def train_dann(feature_extractor, domain_classifier, label_classifier, data_loader): # 梯度反转层 return如有问题,可以直接沟通
👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇👇
