【轴承故障诊断】一种用于轴承故障诊断的稀疏贝叶斯学习(SBL),两种群稀疏学习算法来提取故障脉冲,第一种仅利用故障脉冲的群稀疏性,第二种则利用故障脉冲的额外周期性行为(Matlab代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

1. 仅利用故障脉冲的群稀疏性

2. 利用故障脉冲的额外周期性行为

应用实例与实验验证

稀疏贝叶斯学习的优势

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、数据


💥1 概述

摘要:
在强背景噪声和/或多重干扰下提取故障脉冲是轴承故障诊断的一项具有挑战性的任务。稀疏表示已被广泛应用于提取故障脉冲,并且能够实现最先进的性能。然而,大多数当前的方法依赖于精心调整多个超参数,并且由于近似正则化和/或启发式稀疏模型可能会遭受算法退化的可能性。为了克服这些缺点,本文提出了一种用于轴承故障诊断的稀疏贝叶斯学习(SBL)框架,然后提出了两种群稀疏学习算法来提取故障脉冲,其中第一种仅利用故障脉冲的群稀疏性,而第二种则利用故障脉冲的额外周期性行为。由于SBL框架的固有学习能力,所提出的算法可以自动调整超参数,并且不需要任何先验知识。另一个优点是我们的解决方案在贝叶斯最优性的意义上是最大后验估计量,可以产生更高的准确性。对模拟和真实数据集的结果表明了所开发算法的优越性。

用于轴承故障诊断的稀疏贝叶斯学习(Sparse Bayesian Learning, SBL)框架中,两种群稀疏学习算法被用来提取故障脉冲,这两种算法分别侧重于故障脉冲的不同特性:

1. 仅利用故障脉冲的群稀疏性

原理

  • 该算法主要关注故障脉冲在信号中的群稀疏性,即故障脉冲在时域或变换域内以群组的形式出现,且这些群组相对于整个信号来说是稀疏的。
  • 通过稀疏贝叶斯学习框架,算法能够自动调整超参数,无需先验知识,从而有效地从信号中提取出这些稀疏的故障脉冲群组。

优势

  • 能够在强背景噪声和/或多重干扰下准确地提取故障脉冲。
  • 相比传统方法,该算法在准确性上表现出优越性能。

2. 利用故障脉冲的额外周期性行为

原理

  • 除了利用故障脉冲的群稀疏性外,该算法还进一步考虑了故障脉冲的额外周期性行为。
  • 故障脉冲在信号中往往呈现出一定的周期性特征,这种周期性特征可以被用来增强故障脉冲的提取效果。
  • 通过结合故障脉冲的群稀疏性和周期性行为,算法能够更精确地定位和提取故障脉冲。

优势

  • 在提取故障脉冲时,能够更全面地考虑信号的特性,从而提高提取的准确性和可靠性。
  • 适用于那些具有明显周期性故障特征的轴承系统。

应用实例与实验验证

  • 在实际应用中,这两种群稀疏学习算法已经被用于轴承故障诊断领域,并取得了显著的效果。
  • 实验结果显示,在模拟和真实数据集上,这两种算法均能够准确地提取出故障脉冲,并有效地识别出轴承的故障类型。

稀疏贝叶斯学习的优势

  • 稀疏贝叶斯学习方法在贝叶斯框架下特别针对高维数据和特征选择问题而设计,能够引入稀疏性以提高模型的效率、泛化能力和解释性。
  • 在轴承故障诊断中,稀疏贝叶斯学习方法不仅可以通过特征选择和提取来提高模型的精度和鲁棒性,还可以通过优化模型参数和结构来适应不同工况下的故障诊断需求。

综上所述,用于轴承故障诊断的稀疏贝叶斯学习框架中的两种群稀疏学习算法在提取故障脉冲方面各具特色且优势互补。在实际应用中,可以根据具体需求选择合适的算法或结合使用两种算法以达到最佳的故障诊断效果。

📚2 运行结果

部分代码:

%% P-GSL   %%%%%%%%%%%%%%%%%%%%%%%%%
[P_GSL_result] = P_GSL(y, Fs);

%% GSL     %%%%%%%%%%%%%%%%%%%%%%%%%
[GSL_result] = GSL(y);

%% AdaESPGL, 
Params.Fs            = Fs;     % The sampling frequency of the simulation signal
Params.N             = N;      % The length of the signal
Params.N1    = 4;              % The samples of one impulse
Params.M     = 4;              % The number of periods
Params.Fn_N  = 0;   % a vector which contains the period of each component (Fs / fc)
Params.mu    = 9.235e-4;       % The parameter related to sparsity within groups
Params.pen   = 'atan';         % The penalty function
Params.rho   = 1;              % The degree of nonconvex
Params.Nit   = 100;            % The number of iteration 
% Estimate noise
[C,L]=wavedec(y,5,'sym8');
c1=detcoef(C,L,1);
est_noise=median(abs(c1-median(c1)))/0.678;
Params.lam= 0.272*est_noise + 0.044; 
[AdaESPGL_result] = AdaESPGL(y, Params);

%% BPD,  
N=Params.N ;
rho = 1;
Method.Name = 'L1';
k_sparsity=round(N*10/100);
BPD_result = IterGSS_modified(y, rho, k_sparsity, Method)';


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Plot
fig=figure(8);
set(fig,'position',[100 100 800 1000]);
subplot(5,2,1)
plot(t, y);
axis([0 1 -2.1 2.1])
title('a) Original')
ylabel('Amp.')

subplot(5,2,3)
plot(t, P_GSL_result);
axis([0 1 -2.1 2.1])
title('c) P-GSL')
ylabel('Amp.')

subplot(5,2,5)
plot(t, AdaESPGL_result);
axis([0 1 -2.1 2.1])
title('e) AdaESPGL')
ylabel('Amp.')

subplot(5,2,7)
plot(t, GSL_result);
axis([0 1 -2.1 2.1])
title('g) GSL')
ylabel('Amp.')

subplot(5,2,9)
plot(t, BPD_result);
axis([0 1 -2.1 2.1])
title('i) BPD')
ylabel('Amp.')
xlabel('Time (s)')

%%
F = ([1:N]-1)*Fs/N; 
F2= F(1:2001);

subplot(5,2,2)
y_enve=abs( fft(abs(hilbert(y))))/(N/2);
% y_enve=y_enve/max(y_enve);
plot(F2,  y_enve(1:2001))
axis([0 800 0 0.035])
title('b) Original')

subplot(5,2,4)
our_PSBL_enve=abs(fft(abs(hilbert(P_GSL_result))))/(N/2);
% our_PSBL_enve=our_PSBL_enve/max(our_PSBL_enve);
plot(F2,  our_PSBL_enve(1:2001) )
axis([0 800 0 0.035])
title('d) P-GSL')

subplot(5,2,6)
y_AdaESPGL_enve=abs(fft(abs(hilbert(AdaESPGL_result))))/(N/2);
% y_AdaESPGL_enve=y_AdaESPGL_enve/max(y_AdaESPGL_enve);
plot(F2,  y_AdaESPGL_enve(1:2001))
axis([0 800 0 0.035])
title('f) AdaESPGL')

subplot(5,2,8)
our_SBL_enve=abs(fft(abs(hilbert(GSL_result))))/(N/2);
% our_SBL_enve=our_SBL_enve/max(our_SBL_enve);
plot(F2,  our_SBL_enve(1:2001) )
axis([0 800 0 0.035])
title('h) GSL')

subplot(5,2,10)
y_BPD_enve=abs(fft(abs(hilbert(BPD_result))))/(N/2);
% y_BPD_enve=y_BPD_enve/max(y_BPD_enve);
plot(F2,  y_BPD_enve(1:2001) )
axis([0 800 0 0.035])
title('j) BPD')
xlabel('Frequency [Hz]')

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]段青.基于稀疏贝叶斯学习方法的回归与分类在电力系统中的预测研究[D].山东大学,2010.DOI:10.7666/d.y1794532.

[2]谈斐祺 谢磊 王挺任.基于稀疏性贝叶斯极限学习机的气动调节阀多类故障诊断[J].上海应用技术学院学报:自然科学版, 2015, 15(3):6.DOI:10.3969/j.issn.1671-7333.2015.03.012.

🌈4 Matlab代码、数据

  • 7
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值