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

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

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

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

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

💥1 概述

摘要:

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

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

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

原理

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

优势

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

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

原理

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

优势

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

应用实例与实验验证

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

稀疏贝叶斯学习的优势

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

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

📚2 运行结果

image.gif 编辑

image.gif 编辑

部分代码:

%% 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].上海应用技术学院学报:自然科学资料获取,更多粉丝福利,MATLAB|Simulink|Python资源获取【请看主页然后私信】

相关文章
|
3月前
|
算法 定位技术 计算机视觉
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
【水下图像增强】基于波长补偿与去雾的水下图像增强研究(Matlab代码实现)
178 0
|
3月前
|
算法 机器人 计算机视觉
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
【图像处理】水下图像增强的颜色平衡与融合技术研究(Matlab代码实现)
150 0
|
3月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
210 8
|
3月前
|
机器学习/深度学习 编解码 算法
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
基于OFDM技术的水下声学通信多径信道图像传输研究(Matlab代码实现)
227 8
|
3月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
399 0
|
3月前
|
新能源 Java Go
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
【EI复现】参与调峰的储能系统配置方案及经济性分析(Matlab代码实现)
149 0
|
3月前
|
机器学习/深度学习 数据采集 测试技术
基于CEEMDAN-VMD-BiLSTM的多变量输入单步时序预测研究(Matlab代码实现)
基于CEEMDAN-VMD-BiLSTM的多变量输入单步时序预测研究(Matlab代码实现)
135 8
|
3月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
229 8
|
3月前
|
编解码 运维 算法
【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)
【分布式能源选址与定容】光伏、储能双层优化配置接入配电网研究(Matlab代码实现)
209 12
|
3月前
|
人工智能 数据可视化 网络性能优化
【顶级SCI复现】虚拟电厂的多时间尺度调度:在考虑储能系统容量衰减的同时,整合发电与多用户负荷的灵活性研究(Matlab代码实现)
【顶级SCI复现】虚拟电厂的多时间尺度调度:在考虑储能系统容量衰减的同时,整合发电与多用户负荷的灵活性研究(Matlab代码实现)
167 9

热门文章

最新文章