时变滤波经验模态分解(TVFEMD)的性能在很大程度上取决于其参数(即带宽阈值和B 样条阶数)的选取。在应用TVFEMD 诊断故障时,参数需要预先人为设定,因此难以获得令人满意的分解结果。
本期文章步骤有三:
①采用减法优化器算法来搜索TVFEMD最佳参数组合;
②使用得到的最佳参数组合对轴承故障信号进行TVFEMD 分解,得到一组本征模态函数(IMF);
③选取包络谱故障特征能量比最大的IMF 分量进行包络解调分析,提取故障特征,进行故障诊断。
可以参考的文献如下:
[1]岑立,钟先友.基于粒子群优化时变滤波经验模态分解的轴承故障诊断[J].机械,2020,47(11)
[2]唐贵基,周翀,庞彬等.基于参数优化时变滤波经验模态分解的转子故障诊断[J].振动与冲击,2019,38(10):
[3]邓飞跃,唐贵基,王晓龙.谐波分解结合自互补Top-Hat变换的轴承微弱故障特征提取方法[J].振动工程学报,2015,28(06):
以西储大学数据集130.mat为例,选用130.mat中的X130_BA_time.mat数据中4000个数据点。没有数据的看我这篇文章。西储大学轴承诊断数据处理,matlab免费代码获取
简单说一下这里的适应度函数选择,采用包络谱故障特征能量比。
首先将数据分解为k个IMF分量,然后分别计算每个IMF分量的包络谱故障特征能量比,选择该值最大的那个IMF分量即为最佳IMF分量,然后对这个最佳IMF分量进行包络谱分析即可实现故障诊断。
包络谱故障特征能量比定义如下:
通过解调得到包络谱序列为X,则信号包络谱的总能量为 ,定义故障特征能量比 表达式如下: 式中 为轴承故障特征频率i倍频处的幅值,文中选n=4(这里的n可以自行决定,3~6都可以)。故障特征能量比表示信号故障特征频率前n倍频处的能量占包络谱总能量的比重,比重越大,说明故障特征频率前n倍越明显,信号解调效果越好。
结果展示
1.SABO优化TVFEMD的适应度曲线图
程序运行结果也会在窗口打印出来:
SABO: At iteration 2 ,the best fitness is 0.12748the best position is:[0.114776 19]
SABO: At iteration 4 ,the best fitness is 0.12933the best position is:[0.1 9]
SABO: At iteration 6 ,the best fitness is 0.13383the best position is:[0.1 10]
SABO: At iteration 8 ,the best fitness is 0.13383the best position is:[0.1 10]
SABO: At iteration 10 ,the best fitness is 0.13383the best position is:[0.1 10]
SABO: At iteration 12 ,the best fitness is 0.13848the best position is:[0.100404 12]
SABO: At iteration 14 ,the best fitness is 0.13848the best position is:[0.100404 12]
SABO: At iteration 16 ,the best fitness is 0.14087the best position is:[0.10921 9]
SABO: At iteration 18 ,the best fitness is 0.14087the best position is:[0.10921 9]
SABO: At iteration 20 ,the best fitness is 0.14087the best position is:[0.10921 9]
最佳tvfemd参数是:0.10921 9,最佳IMF分量是:IMF2
2.最佳tvfemd参数回带后的分解图:
三维分解图的展示:
3.最佳tvfemd参数回带后的频谱图:
4.最佳tvfemd参数回带后,求最佳IMF分量的包络谱图:
可以看到一倍频二倍频三倍频非常明显,因此可以判断该故障信号为外圈故障。
5.tvfemd分解后的包络图
6.最佳IMF分量的边际谱图:
代码目录展示:
部分代码展示:
%% 故障特征能量比为适应度函数,采用SABO算法优化tvfemd,求取tvfemd最佳的两个参数
clear
clc
close all
addpath(genpath(pwd))
load 130.mat %这里选取130.mat
L = 4000 ; %选取4000个点
data=X130_BA_time(2001:L+2000);%为了去除暂态,数据稍微往后取取
data = data';
fobj=@fitness; %适应度函数
D=2; % 优化变量数目
lb=[0.1 5]; % 下限值,分别是带宽阈值和B样条阶
ub=[1 30]; % 上限值
% Zhang等建议TVFEMD算法的带宽阈值[0,1]。然而,,的值越接近于0,算法计算
% 时间越长。通常取值约0.1时,分解就已达到% 较好的效果,且有比较短的计算时间。
% 因此,本文参数优化范围为带宽阈值[0.1,1],B样条阶数5≤n≤30。
% 参考文献:【1】基于粒子群优化时变滤波经验模态分解的轴承故障诊断
% 参考文献:【2】Zhang X,Liu Z,Miao Q,et al.An optimized time varying filtering based empirical mode decomposition method with grey wolf
% optimizer for machinery fault diagnosis[J].Journal of Sound Vibration,2018(418):55-78.
% 参考文献:【3】唐贵基,周肿,庞彬,等.基于参数优化时变滤波经验模态分解的转子故障诊断[J].振动与冲击,2019,38(10):162-168.
T=20; % 最大迭代数目
N=15; % 种群规模
fcf = 3.5848*1796/60; %由于要计算故障特征能量比,因此需要事先知道故障特征能频率是多少。
% 这是130.mat的故障特征频率,每次更换数据,也要替换这个值。
%具体参考:https://zhuanlan.zhihu.com/p/420780043
[SABOBest_score,SABOBest_pos,Bestidx,SABO_curve] = SABO(N,T,lb,ub,D,fobj,data,fcf);
display(['最佳tvfemd参数是:', num2str([SABOBest_pos(1),fix(SABOBest_pos(2))]),',最佳IMF分量是:IMF',num2str(Bestidx)]); %输出最佳位置
save result.mat SABOBest_score SABOBest_pos Bestidx SABO_curve
点击下方卡片获取更多代码!