一种基于分类的旋转机械故障诊断频段选择的新方法研究(Matlab代码实现)

👨‍🎓个人主页:研学社的博客 

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

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

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

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

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

旋转机械故障诊断中的频带选择(FBS)旨在识别频带位置,包括全频带外的故障瞬变,因此故障诊断可以抑制来自其他频率分量的噪声影响。冲动性和循环平稳性最近被认为是瞬态的两个独特特征。因此,许多研究都集中在开发两种特征的量化指标上,并将它们用作指导FBS的指标。然而,大多数以前的研究几乎忽略了FBS的另一个方面,即健康参考,这显着影响FBS的性能。为了解决这个问题,本文调查了鲁棒参考的重要性,并将其视为FBS的第三个关键方面。借助健康参考,
可以定位故障瞬变存在的频段。提出了一种基于分类的新方法,将FBS的所有三个方面(冲动性、循环平稳性和健康参考)整合在一起。分类精度被开发为一种新的指标,用于选择最敏感的频段进行旋转机械故障诊断。所提出的方法(由accugram创造)已在基准和实验数据集上得到验证。比较结果表明,与传统包络分析、库尔图和信息图相比,其有效性和鲁棒性性。

📚2 运行结果

 

 部分代码:

% Inputs:
% [1] x         : [healthy; test]
% [2] xLabel    : 2-by-1 vector, where 0 = healthy; 1 = test
% [3] N         : the number of segments
% [4] overlap   : overlap for two neighbor segments
% [5] Fs        : sampling frequency
% [6] nlevel    : the number of level
% [7] isPLot    : 1 = accugram plot; otherwise, 0.
%
% Outputs:
% [1] fc        : center frequency
% [2] bw        : bandwidth
% [3] level     : level index
% [4] acc       : classificaiton accuracy
% [5] accMatrix : all values in an accugram
%
% References:
% [1] Zhiliang Liu, Yaqiang Jin, Ming J. Zuo, and Dandan Peng. ACCUGRAM: a machine learning approach to frequency band selection for rotating machinery fault diagnosis. ISA Transactions, Submitted May 18, 2018, Under Review.

if nargin ~= 7 error('nargin does not match!'); end

[xSegment,label] = slidingSegmentation(x,xLabel,N,overlap);

% Freqeuncy band partition
% m = size(xSegment,1);
m = 2*N; % number of samples for accuracy representation
lev = 2.^[0:nlevel];
temp = [3*lev(2)/2 3*lev(2:end-2);lev(3:end)];
lev = [lev(1) lev(2) temp(:)']; % number of bands in each level
row = length(lev); % row number of accugram
col = 3*2^nlevel; % column number of accugram

accMatrix = zeros(row,col); % accugram matrix
bandNum = sum(lev); % number of frequency band candidates
xMatrix = zeros(bandNum,2*m); % feature matrix for each band candidate, 2 means two features

for i = 1:m
    iMatrix = featureExtraction(xSegment(i,:),nlevel);% feature extraction for the ith frequency band
    xMatrix(:,(i-1)*2+1:2*i) = iMatrix;
end

% n = size(xMatrix,1);

acc = zeros(1,bandNum);

for i = 1:bandNum
    temp = (reshape(xMatrix(i,:),size(iMatrix,2),m))';
    acc(i) = getAccuracy(temp,label); % compute classification accuracy for the ith frequency band
end

index = 0;

for i = 1:row % row number of accugram
    iRate = acc((index+1):(index+lev(i)));
    temp = repmat(iRate,col/lev(i),1);
    accMatrix(i,:) = reshape(temp,1,col);
    index = index+lev(i);
end

num = log2(lev);
Ntick = length(num);
freq = Fs/2*(0:3*2^nlevel-1)/(3*2^(nlevel));
% freq_stft = Fs*(0:Nfft(end)/2-1)/Nfft(end);
[I,J,M] = max_IJ(accMatrix);
bw = Fs/2/lev(max(I));  % compute bandwidth
numfre = col/lev(max(I)); % 录脝脣茫脙驴赂枚麓酶驴铆脣霉脮录碌脛赂帽脢媒?
% sum(lev(1:max(I)-1))+length(J)/numfre;
dist = zeros(1,length(J)/numfre);
for i = 1:length(dist)
    temp = sum(lev(1:max(I)-1))+ J(i*numfre)/numfre;
    target = xMatrix(temp,:);
    target = reshape(target,size(iMatrix,2),m);
    dist(i) = sum(mean(target,2).^2);
    %             fc(i)=(temp-1)*bw+bw/2; % compute center frequency
end
[a,b] = max(dist); % a represent the maximum dist and b represent the location.
fc = ( J(b*numfre)/numfre-1)*bw+bw/2;

if isPlot
    figure
    imagesc(freq,1:Ntick,accMatrix),colorbar
    xlabel('frequency [Hz]'),set(gca,'ytick',1:Ntick,'yticklabel',round(num*10)/10),ylabel('level: log2(lev)')
    title(['Accu_{max}=',num2str(M),' @ level ',num2str(round(10*num(max(I)))/10),', Bw= ',num2str(bw),'Hz, f_c=',num2str(fc),'Hz, Dist=',num2str(a)])
end

acc = M;
level = round(10*num(max(I)))/10;
Find_wav_accugram(x(2,:),nlevel,level,fc,M,Fs);

end

function acc = getAccuracy(x,label)

🎉3 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]Zhiliang Liu, Yaqiang Jin, Ming J. Zuo, and Dandan Peng. ACCUGRAM: a novel approach based on classification to frequency band selection for rotating machinery fault diagnosis. ISA Transactions, Available online 15 May 2019.

🌈4 Matlab代码实现

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

荔枝科研社

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值