上一篇文章讲解了有关双树复小波变换的一些理论知识,以及在信号处理和图像处理方面的东西,这一章讲讲DTCWT在轴承故障诊断中的应用,所用的数据也是那两篇文章。
以第3个NSK轴承X方向的第7组70Hz振动数据为例
其原始信号的包络谱如下
x1 = load('#8');x1 = x1.X;x1 = x1(1:5120*2);x1 = x1-mean(x1);
fs = 10240;
N = length(x1);
t = 0:1/fs:(N-1)/fs;
fs=10240;
v=70;
[pEnvInner, fEnvInner, xEnvInner, tEnvInner] = envspectrum(x1, fs);plot(fEnvInner, pEnvInner)
xlim([0 800]);hold on;ncomb = 20;helperPlotCombs(ncomb,6.587 *v);
可见内圈故障特征频率,但幅值相对较小,接下来使用DTCWT进行分解分析
分解层数设置为6层,先看双树系数的实部
J = 6;
%[dtcplxA,dtcplxD]为分解得到的系数
details = zeros(10240,5);
details(1:2:end,1) = dtcplxD{1};
details(2:4:end,2) = dtcplxD{2};
details(4:8:end,3) = dtcplxD{3};
details(8:16:end,4) = dtcplxD{4};
details(16:32:end,5) = dtcplxD{5};
general = zeros(10240,1);%概貌
general(16:32:end,5) = dtcplxA;
figure(2)
subplot(6,1,1)
stem(t,real(details(:,1)),'Marker','none','ShowBaseline','off')
title('Level 1')
ylabel('mV')
subplot(6,1,2)
stem(t,real(details(:,2)),'Marker','none','ShowBaseline','off')
title('Level 2')
ylabel('mV')
subplot(6,1,3)
stem(t,real(details(:,3)),'Marker','none','ShowBaseline','off')
title('Level 3')
ylabel('mV')
subplot(6,1,4)
stem(t,real(details(:,4)),'Marker','none','ShowBaseline','off')
title('Level 4')
ylabel('mV')
subplot(6,1,5)
stem(t,real(details(:,5)),'Marker','none','ShowBaseline','off')
title('Level 5')
ylabel('mV')
subplot(6,1,6)
stem(t,general,'Marker','none','ShowBaseline','off')
title('general 5')
ylabel('mV')
再看实部的包络谱
BPFI=6.587 ;
subplot_er(6,1,1);[pEnvInner, fEnvInner, xEnvInner, tEnvInner] = envspectrum(real(details(:,1)), fs);plot(fEnvInner, pEnvInner)
xlim([0 1500]);ncomb = 20;helperPlotCombs(ncomb,BPFI*v);xlabel('Frequency(Hz)');ylabel('Ampitude')
subplot_er(6,1,2);[pEnvInner, fEnvInner, xEnvInner, tEnvInner] = envspectrum(real(details(:,2)), fs);plot(fEnvInner, pEnvInner)
xlim([0 1500]);ncomb = 20;helperPlotCombs(ncomb,BPFI*v);xlabel('Frequency(Hz)');ylabel('Ampitude')
subplot_er(6,1,3);[pEnvInner, fEnvInner, xEnvInner, tEnvInner] = envspectrum(real(details(:,3)), fs);plot(fEnvInner, pEnvInner)
xlim([0 1500]);ncomb = 20;helperPlotCombs(ncomb,BPFI*v);xlabel('Frequency(Hz)');ylabel('Ampitude')
subplot_er(6,1,4);[pEnvInner, fEnvInner, xEnvInner, tEnvInner] = envspectrum(real(details(:,4)), fs);plot(fEnvInner, pEnvInner)
xlim([0 1500]);ncomb = 20;helperPlotCombs(ncomb,BPFI*v);xlabel('Frequency(Hz)');ylabel('Ampitude')
subplot_er(6,1,5);[pEnvInner, fEnvInner, xEnvInner, tEnvInner] = envspectrum(real(details(:,5)), fs);plot(fEnvInner, pEnvInner)
xlim([0 1500]);ncomb = 20;helperPlotCombs(ncomb,BPFI*v);xlabel('Frequency(Hz)');ylabel('Ampitude')
subplot_er(6,1,6);[pEnvInner, fEnvInner, xEnvInner, tEnvInner] = envspectrum(general, fs);plot(fEnvInner, pEnvInner)
xlim([0 1500]);ncomb = 20;helperPlotCombs(ncomb,BPFI*v);xlabel('Frequency(Hz)');ylabel('Ampitude')
再看双树系数的虚部
subplot(6,1,1)
stem(t,imag(details(:,1)),'Marker','none','ShowBaseline','off')
title('Level 1')
ylabel('mV')
subplot(6,1,2)
stem(t,imag(details(:,2)),'Marker','none','ShowBaseline','off')
title('Level 2')
ylabel('mV')
subplot(6,1,3)
stem(t,imag(details(:,3)),'Marker','none','ShowBaseline','off')
title('Level 3')
ylabel('mV')
subplot(6,1,4)
stem(t,imag(details(:,4)),'Marker','none','ShowBaseline','off')
title('Level 4')
ylabel('mV')
subplot(6,1,5)
stem(t,imag(details(:,5)),'Marker','none','ShowBaseline','off')
title('Level 5')
ylabel('mV')
subplot(6,1,6)
stem(t,general,'Marker','none','ShowBaseline','off')
title('general 5')
ylabel('mV')
相应的包络谱
subplot_er(6,1,1);[pEnvInner, fEnvInner, xEnvInner, tEnvInner] = envspectrum(imag(details(:,1)), fs);plot(fEnvInner, pEnvInner)
xlim([0 1500]);ncomb = 20;helperPlotCombs(ncomb,BPFI*v);xlabel('Frequency(Hz)');ylabel('Ampitude')
subplot_er(6,1,2);[pEnvInner, fEnvInner, xEnvInner, tEnvInner] = envspectrum(imag(details(:,2)), fs);plot(fEnvInner, pEnvInner)
xlim([0 1500]);ncomb = 20;helperPlotCombs(ncomb,BPFI*v);xlabel('Frequency(Hz)');ylabel('Ampitude')
subplot_er(6,1,3);[pEnvInner, fEnvInner, xEnvInner, tEnvInner] = envspectrum(imag(details(:,3)), fs);plot(fEnvInner, pEnvInner)
xlim([0 1500]);ncomb = 20;helperPlotCombs(ncomb,BPFI*v);xlabel('Frequency(Hz)');ylabel('Ampitude')
subplot_er(6,1,4);[pEnvInner, fEnvInner, xEnvInner, tEnvInner] = envspectrum(imag(details(:,4)), fs);plot(fEnvInner, pEnvInner)
xlim([0 1500]);ncomb = 20;helperPlotCombs(ncomb,BPFI*v);xlabel('Frequency(Hz)');ylabel('Ampitude')
subplot_er(6,1,5);[pEnvInner, fEnvInner, xEnvInner, tEnvInner] = envspectrum(imag(details(:,5)), fs);plot(fEnvInner, pEnvInner)
xlim([0 1500]);ncomb = 20;helperPlotCombs(ncomb,BPFI*v);xlabel('Frequency(Hz)');ylabel('Ampitude')
subplot_er(6,1,6);[pEnvInner, fEnvInner, xEnvInner, tEnvInner] = envspectrum(general, fs);plot(fEnvInner, pEnvInner)
xlim([0 1500]);ncomb = 20;helperPlotCombs(ncomb,BPFI*v);xlabel('Frequency(Hz)');ylabel('Ampitude')
可见实部的包络谱的某几级系数的故障特征频率更明显
再以第3个NSK轴承X方向的第8组50Hz振动数据为例
其原始信号的包络谱如下
分解层数设置为6层,先看双树系数的实部
相应的包络谱
仔细看第2个子图
第2个子图的故障特征频率已经十分明显了
再看双树系数的虚部
虚部树的包络谱
效果就不说了,显而易见
同理,再以第3个NSK轴承X方向的第8组30Hz振动数据为例,其包络谱,双树系数的实部,实部的包络谱,
双树系数的虚部,虚部的包络谱分别如下图
效果就不用多说了,好的一批了。
擅长现代信号处理(改进小波分析系列,改进变分模态分解,改进经验小波变换,改进辛几何模态分解等等),改进机器学习,改进深度学习,机械故障诊断,改进时间序列分析(金融信号,心电信号,振动信号等)