💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
💥1 概述
摘要:
在强背景噪声和/或多重干扰下提取故障脉冲是轴承故障诊断的一项具有挑战性的任务。稀疏表示已被广泛应用于提取故障脉冲,并且能够实现最先进的性能。然而,大多数当前的方法依赖于精心调整多个超参数,并且由于近似正则化和/或启发式稀疏模型可能会遭受算法退化的可能性。为了克服这些缺点,本文提出了一种用于轴承故障诊断的稀疏贝叶斯学习(SBL)框架,然后提出了两种群稀疏学习算法来提取故障脉冲,其中第一种仅利用故障脉冲的群稀疏性,而第二种则利用故障脉冲的额外周期性行为。由于SBL框架的固有学习能力,所提出的算法可以自动调整超参数,并且不需要任何先验知识。另一个优点是我们的解决方案在贝叶斯最优性的意义上是最大后验估计量,可以产生更高的准确性。对模拟和真实数据集的结果表明了所开发算法的优越性。
📚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 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。