旋转机械故障诊断特征表达与智能识别【附代码】
✅博主简介擅长数据搜集与处理、建模仿真、程序设计、仿真代码、论文写作与指导毕业论文、期刊论文经验交流。✅ 如需沟通交流扫描文章底部二维码。1优化变分互无量纲特征与变分模态分解的联合特征提取针对旋转机械故障信号中非线性、非平稳特性导致传统特征提取效果差的问题提出一种变分模态分解与优化无量纲特征相结合的联合特征提取方法。首先采用变分模态分解将原始振动信号自适应分解为若干本征模态函数分量每个分量对应不同的中心频率和有限带宽。相比经验模态分解变分模态分解具有坚实的数学理论基础能有效避免模态混叠。分解后对每个本征模态函数分量计算一系列无量纲指标包括峰值指标、脉冲指标、裕度指标、波形指标和峭度指标等。但指标在不同故障类型下的敏感度存在差异因此引入互信息熵来评价每个指标与故障类别之间的相关性选择出最具判别力的互无量纲特征组合。同时为了消除各特征之间的量纲影响和冗余性采用主成分分析对选出的特征进行降维融合最终形成维数低、区分度高的故障特征向量。实验证明该方法在滚动轴承单一故障识别中准确率达到98%以上。2互协同宽度学习系统与增量式网络构建为解决传统深度网络在训练数据有限情况下收敛慢、易过拟合的问题提出一种互协同宽度学习系统。宽度学习系统由特征映射节点和增强节点组成通过随机初始化权重和偏差将输入特征映射到高维空间然后利用岭回归快速求解输出权重。本研究在此基础上引入互协同机制即构建两个平行的宽度学习分支在每个分支中分别使用不同的随机映射参数然后通过互信息正则化项使两个分支的特征表示相互促进、协同学习。同时设计了一种增量式学习算法当新数据到达或模型精度不足时可以动态添加额外的增强节点或特征映射节点而无需重新训练整个网络。增量学习过程中仅需更新新节点对应的伪逆矩阵计算效率极高。该方法特别适用于旋转机械在线监测场景能够在毫秒级时间内完成故障分类且在小样本条件下的表现显著优于传统深度神经网络。3多尺度模态特征熵与双通道多尺度卷积神经网络的复合故障诊断针对复合故障多种故障同时发生特征重叠、难以区分的问题提出一种基于多尺度模态特征熵与双通道网络的方法。首先对原始信号进行优化集成经验模态分解提取多个本征模态函数分量并计算每个分量的样本熵、排列熵和能量熵形成多尺度模态特征熵向量。该向量能够同时反映信号在不同时间尺度上的复杂性和不规则性对复合故障中的不同成分敏感。然后设计一个双通道多尺度卷积神经网络其中第一通道使用大尺寸卷积核如64×1来捕获低频故障冲击成分第二通道使用小尺寸卷积核如3×1捕获高频细节特征。两个通道的输出通过注意力加权融合再送入全连接层进行分类。网络训练时引入了中心损失函数使得同类复合故障样本在特征空间中的距离更小不同类之间距离更大。在齿轮箱复合故障数据集上的验证表明该方法对于复合故障的识别准确率超过96%优于单一尺度模型。import torch import torch.nn as nn import numpy as np from scipy.signal import hilbert from vmdpy import VMD # 假设vmdpy可用 # 变分模态分解与无量纲特征 def extract_vmd_features(signal, alpha2000, tau0, K4): u, u_hat, omega VMD(signal, alpha, tau, K, 0) features [] for i in range(K): imf u[i] peak np.max(np.abs(imf)) rms np.sqrt(np.mean(imf**2)) crest peak / rms if rms ! 0 else 0 impulse peak / np.mean(np.abs(imf)) features.extend([crest, impulse]) return np.array(features) # 互协同宽度学习系统 class MutualBLS: def __init__(self, n_feature10, n_enhance20): self.W_f1 np.random.randn(n_feature, 100) self.W_f2 np.random.randn(n_feature, 100) self.W_e1 np.random.randn(100, n_enhance) self.W_e2 np.random.randn(100, n_enhance) def forward(self, X): Z1 np.tanh(X self.W_f1) Z2 np.tanh(X self.W_f2) H1 np.tanh(Z1 self.W_e1) H2 np.tanh(Z2 self.W_e2) A1 np.hstack([Z1, H1]) A2 np.hstack([Z2, H2]) # 互信息正则化实际需计算互信息 reg np.linalg.norm(A1 - A2, fro) return A1, A2, reg def incremental_learning(self, new_nodes5): # 动态增加增强节点 self.W_e1 np.hstack([self.W_e1, np.random.randn(100, new_nodes)]) self.W_e2 np.hstack([self.W_e2, np.random.randn(100, new_nodes)]) return self # 双通道多尺度CNN class DualChannelCNN(nn.Module): def __init__(self, num_classes): super().__init__() self.conv_large nn.Sequential(nn.Conv1d(1,16,64,stride2), nn.ReLU(), nn.MaxPool1d(2)) self.conv_small nn.Sequential(nn.Conv1d(1,16,3), nn.ReLU(), nn.MaxPool1d(2)) self.attention nn.Sequential(nn.Linear(16*2,2), nn.Softmax(dim1)) self.fc nn.Linear(16*2, num_classes) def forward(self, x): feat_large self.conv_large(x).mean(dim2) feat_small self.conv_small(x).mean(dim2) combined torch.stack([feat_large, feat_small], dim1) weights self.attention(combined.view(x.size(0), -1)) out weights[:,0:1]*feat_large weights[:,1:2]*feat_small return self.fc(out) # 多尺度模态特征熵计算 def multi_scale_entropy(imfs): entropies [] for imf in imfs: # 样本熵计算 se -np.sum(np.diff(imf) * np.log(np.abs(np.diff(imf))1e-10)) entropies.append(se) return np.array(entropies) ,如有问题可以直接沟通
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2565203.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!