经验小波变换在信号处理及轴承故障诊断中的应用
moboyou 2025-05-04 15:26 52 浏览
经验小波变换(EWT)使用所谓的自适应小波细分方案从而创建信号的多分辨率分析 (MRA),我在科研中用的较多,但是效果也是看运气的,别人都是“数据驱动”,我靠“运气驱动”。EWT从信号频谱分割开始,将输入信号分解为若干的子频带信号,并提供信号的完美重建。EWT由Gilles教授开发,且Gilles和Heal提出了最原始的基于直方图的方法来分割频谱。
多分辨分析MRA将信号分解为不同尺度的分量(子频带),并通过对每个时间点的分量求和来恢复原始信号。目前许多算法都可以归为MRA框架,比如最大重叠离散小波变换,经验模式分解等算法。之所以EWT等基于小波的方法用的多,是因为该类方法具有严谨的数学推导过程,可解释性较强。EWT方法大体可分为4个步骤:
1.预设参数并选择分割频谱的方式;
2.自适应分割信号频谱,获得一组边界;
3.根据边界序列和经验小波构造滤波器组;
4.滤波并重构,获得一系列具有紧支撑的MRA分量
具体的理论推导可以阅读相关的一系列文章,文章末尾会给出相关文献,不再赘述,主要讲一下EWT在Matlab中是如何应用的,以及改进方向
EWT算法
在MATLAB的高版本中,可以直接使用ewt 函数来获取信号的MRA分量, MATLAB中EWT算法的结构如下:
(1)计算信号的Multitaper功率谱估计,这是功率谱的一个平滑、低方差估计,并将估计值归一化为在[0,1]范围内。默认情况下,严格识别所有峰值大于70%的峰值。关于Multitaper功率谱,可参考如下文章。
频谱分析中如何理解taper? - xiaotu Peng的回答 - 知乎
https://www.zhihu.com/question/372832396/answer/1838971028
(2)经验小波通带的过渡带在相邻峰的几何平均频率处交叉(这个看一下原文就很清楚了),Meyer小波的构造以及确定参数γ的方式见文献[1],由此形成一个Parseval 紧框架,Parseval 紧框架在现代信号处理中很常用。
(3)为了确定相邻通带之间的边界,可以使用相邻峰之间的第一个局部最小值,如果没有确定局部最小值,默认为几何平均值。注意,局部最小值方法对噪声极为敏感,实际应用时效果不好。
因为EWT的小波形成 Parseval 紧框架,所以滤波器组是自对偶的,即分析滤波器组等于综合滤波器组。 EWT在频域中对信号进行滤波,然后进行逆变换以获得分析系数。
下面给出一个简单的例子。首先,设置一个测试信号
rng default
fs = 500;
t = 0:1/fs:1-1/fs;
f1 = 1./(6/5+cos(2*pi*t));
f2 = 1./(3/2+sin(2*pi*t));
f3 = cos(32*pi*t+cos(64*pi*t));
sig = f1+f2.*f3;
sig = sig+randn(1,length(sig))/2;
sig = sig-mean(sig);
plot(t,sig)
xlabel('Time (sec)')
ylabel('Amplitude')
title('Test Signal')
然后绘制信号的周期谱图和平滑Multitaper估计值
[Pxx,F] = periodogram(sig,[],[],500);
Pxxmt = pmtm(sig,5,[],500,'Tapers','sine','power');
subplot(2,1,1)
plot(F,Pxx)
title('Periodogram')
subplot(2,1,2)
plot(F,Pxxmt)
title('Smoothed Estimate')
xlabel('Frequency (Hz)')
EWT分解
为了描述方便,使用默认设置的ewt 函数来获取信号的 MRA 和有关滤波器组的信息,当然还有好几种算法可以控制ewt函数并获得信号的MRA。
[mra,~,~,info] = ewt(sig);
size(mra)
可以看到,ewt将sig信号默认分解为了两个MRA分量,看一下分解波形,频谱就不画了
subplot(2,1,1);plot(t,mra(:,1));ylabel('mra1');
subplot(2,1,2);plot(t,mra(:,2));ylabel('mra2');
指定最大峰值数量
默认情况下,ewt 会找到2个MRA成分,观察一下ewt的滤波器组通带(中心频率与带宽),因为频率是归一化的,所以要乘以采样频率
info.FilterBank.Passbands*fs注意到在 22 Hz处有一个边界,第1段有两个峰,因此将 MaxNumPeaks设置为3,以便ewt 使用3个最大峰确定滤波器通带
[mra,cfs,~,info] = ewt(sig,'MaxNumPeaks',3);
info.FilterBank.Passbands*fs看一下分解波形
subplot(3,1,1);plot(t,mra(:,1));ylabel('mra1');
subplot(3,1,2);plot(t,mra(:,2));ylabel('mra2');
subplot(3,1,3);plot(t,mra(:,3));ylabel('mra3');
验证一下是否完美重建
max(abs(sig'-sum(mra,2)))
sum(sum(abs(cfs).^2))
norm(sig,2)^2
指定百分比阈值
此外还可以设置用于确定在Multitaper功率谱中保留哪些峰的百分比阈值,而不是指定最大峰数,指定最大峰数这个方法在噪声较大的信号中效果很拉跨。信号的Multitaper功率谱估计中的局部最大值被归一化到[0,1]范围内,将 百分比阈值设置为 2。
[~,~,~,info] = ewt(sig,'PeakThresholdPercent',2);
info.FilterBank.Passbands*fs此外,还可以设置频谱的分割方法(例如localmin,geomean方法)和频率分辨率等参数,就不一一列举了。
下面开始重头戏:轴承故障诊断,试试“运气驱动”吧。
轴承数据的话先看下前几篇文章
基于包络谱的轴承故障诊断方法-第1篇 - 哥廷根数学学派的文章 - 知乎
https://zhuanlan.zhihu.com/p/533579665
基于包络谱的轴承故障诊断方法-第2篇 - 哥廷根数学学派的文章 - 知乎
https://zhuanlan.zhihu.com/p/533984966
基于离散小波变换的滚动轴承故障诊断 - 哥廷根数学学派的文章 - 知乎
https://zhuanlan.zhihu.com/p/534179963
以第3轴承Z轴70Hz第8组数据为例,其包络谱如下
下面开始ewt分解,首先,指定最大峰值数量MaxNumPeaks=3,求得ewt的滤波器组通带信息为:
子频带的波形及包络谱如下:
看一下最大峰值数量MaxNumPeaks=4时的各子频带的包络谱:
看一下最大峰值数量MaxNumPeaks=5时的各子频带的包络谱:
可见,MaxNumPeaks>5就不用考虑了
调整百分比阈值
首先,将百分比阈值设置为 2,得到10个mra分量,看一下ewt的滤波器组通带信息:
ans =
1.0e+03 *
4.0840 5.1200
3.9510 4.0840
3.9380 3.9510
3.3400 3.9380
2.7670 3.3400
2.4940 2.7670
2.1300 2.4940
1.9060 2.1300
1.0800 1.9060
0 1.0800
其子频带分量的包络谱如下:
可见第5个分量故障特征频率十分突出,放大看一下:
再看一下将百分比阈值设置为5,得到6个mra分量,看一下ewt的滤波器组通带信息:
ans =
1.0e+03 *
3.9510 5.1200
3.9380 3.9510
3.3400 3.9380
2.7670 3.3400
2.4940 2.7670
0 2.4940
其子频带分量的包络谱如下:
重看第4个分量:
频谱分割方法
当MaxNumPeaks=5,频谱分割方法为localmin(局部极小)时,各mra分量的包络谱如下图:
效果拉跨,localmin受噪声影响太大了。
当MaxNumPeaks=5,频谱分割方法为geomean(几何平均)时,各子频带分量的包络谱如下图:
重看第4个分量
此外,还有很多优秀的频谱分割方法,比如自适应法,就不一一列举了。
参考文献:
[1] Gilles, Jér^ome. “Empirical Wavelet Transform.” IEEE Transactions on Signal Processing 61, no. 16 (August 2013): 3999–4010. https://doi.org/10.1109/TSP.2013.2265222.
[2] Gilles, Jér^ome, Giang Tran, and Stanley Osher. “2D Empirical Transforms. Wavelets, Ridgelets, and Curvelets Revisited.” SIAM Journal on Imaging Sciences 7, no. 1 (January 2014): 157–86. https://doi.org/10.1137/130923774.
[3] Gilles, Jér^ome, and Kathryn Heal. “A Parameterless Scale-Space Approach to Find Meaningful Modes in Histograms — Application to Image and Spectrum Segmentation.” International Journal of Wavelets, Multiresolution and Information Processing 12, no. 06 (November 2014): 1450044. https://doi.org/10.1142/S0219691314500441.
重要重要重要
EWT的不足也很明显,比如EWT会消耗大量的时间,并且分割出很多无效分量;新的模态混叠现象出现了,同一个分量也可能会被分割为两部分等。对此很多学者对此进行了研究和改进,为了对应经验小波变换的四个步骤,各种改进方法也被作者分为四类。第一类:优化输入参数。为了解决分割频谱和图像时的参数问题,Gilles将傅里叶谱变为尺度空间表示中的函数,提出了概率、“Otsu's”、“k-Means”3种方式,从尺度空间函数中获取有意义的模式。上述基于尺度空间函数的频谱分割方式增加了经验小波变换的自适应性,但是会导致边界的个数增多,也就意味着无效分量会增多,运算耗时也会增加。第二类:更换分割谱。经验小波变换在频谱中划分边界,但Gilles提出的三种方式极易受到噪声的干扰而使边界的个数增多。因此,抑制谱中的噪声成分、放大有用成分有利于边界的划分,无效分量的个数也会被减少。因此可以用自回归功率谱、贝塞尔级数展开(Fourier-Bessel Series Expansion, FBSE)等代替频谱。第三类:优化边界。比如采用顺序统计滤波器(Order tatistic Filter, OSF)的包络估计方法来分割频谱。第四类:筛选MRA分量,这个研究的就比较多了,什么改进峭度指标之类的,不再赘述。
好了,EWT就到这里了,以后慢慢更新一些改进算法,码字不易,且行且珍惜。
相关推荐
- Excel技巧:SHEETSNA函数一键提取所有工作表名称批量生产目录
-
首先介绍一下此函数:SHEETSNAME函数用于获取工作表的名称,有三个可选参数。语法:=SHEETSNAME([参照区域],[结果方向],[工作表范围])(参照区域,可选。给出参照,只返回参照单元格...
- Excel HOUR函数:“小时”提取器_excel+hour函数提取器怎么用
-
一、函数概述HOUR函数是Excel中用于提取时间值小时部分的日期时间函数,返回0(12:00AM)到23(11:00PM)之间的整数。该函数在时间数据分析、考勤统计、日程安排等场景中应用广泛。语...
- Filter+Search信息管理不再难|多条件|模糊查找|Excel函数应用
-
原创版权所有介绍一个信息管理系统,要求可以实现:多条件、模糊查找,手动输入的内容能去空格。先看效果,如下图动画演示这样的一个效果要怎样实现呢?本文所用函数有Filter和Search。先用filter...
- FILTER函数介绍及经典用法12:FILTER+切片器的应用
-
EXCEL函数技巧:FILTER经典用法12。FILTER+切片器制作筛选按钮。FILTER的函数的经典用法12是用FILTER的函数和切片器制作一个筛选按钮。像左边的原始数据,右边想要制作一...
- office办公应用网站推荐_office办公软件大全
-
以下是针对Office办公应用(Word/Excel/PPT等)的免费学习网站推荐,涵盖官方教程、综合平台及垂直领域资源,适合不同学习需求:一、官方权威资源1.微软Office官方培训...
- WPS/Excel职场办公最常用的60个函数大全(含卡片),效率翻倍!
-
办公最常用的60个函数大全:从入门到精通,效率翻倍!在职场中,WPS/Excel几乎是每个人都离不开的工具,而函数则是其灵魂。掌握常用的函数,不仅能大幅提升工作效率,还能让你在数据处理、报表分析、自动...
- 收藏|查找神器Xlookup全集|一篇就够|Excel函数|图解教程
-
原创版权所有全程图解,方便阅读,内容比较多,请先收藏!Xlookup是Vlookup的升级函数,解决了Vlookup的所有缺点,可以完全取代Vlookup,学完本文后你将可以应对所有的查找难题,内容...
- 批量查询快递总耗时?用Excel这个公式,自动计算揽收到签收天数
-
批量查询快递总耗时?用Excel这个公式,自动计算揽收到签收天数在电商运营、物流对账等工作中,经常需要统计快递“揽收到签收”的耗时——比如判断某快递公司是否符合“3天内送达”的服务承...
- Excel函数公式教程(490个实例详解)
-
Excel函数公式教程(490个实例详解)管理层的财务人员为什么那么厉害?就是因为他们精通excel技能!财务人员在日常工作中,经常会用到Excel财务函数公式,比如财务报表分析、工资核算、库存管理等...
- Excel(WPS表格)Tocol函数应用技巧案例解读,建议收藏备用!
-
工作中,经常需要从多个单元格区域中提取唯一值,如体育赛事报名信息中提取唯一的参赛者信息等,此时如果复制粘贴然后去重,效率就会很低。如果能合理利用Tocol函数,将会极大地提高工作效率。一、功能及语法结...
- Excel中的SCAN函数公式,把计算过程理清,你就会了
-
Excel新版本里面,除了出现非常好用的xlookup,Filter公式之外,还更新一批自定义函数,可以像写代码一样写公式其中SCAN函数公式,也非常强大,它是一个循环函数,今天来了解这个函数公式的计...
- Excel(WPS表格)中多列去重就用Tocol+Unique组合函数,简单高效
-
在数据的分析和处理中,“去重”一直是绕不开的话题,如果单列去重,可以使用Unique函数完成,如果多列去重,如下图:从数据信息中可以看到,每位参赛者参加了多项运动,如果想知道去重后的参赛者有多少人,该...
- Excel(WPS表格)函数Groupby,聚合统计,快速提高效率!
-
在前期的内容中,我们讲了很多的统计函数,如Sum系列、Average系列、Count系列、Rank系列等等……但如果用一个函数实现类似数据透视表的功能,就必须用Groupby函数,按指定字段进行聚合汇...
- Excel新版本,IFS函数公式,太强大了!
-
我们举一个工作实例,现在需要计算业务员的奖励数据,右边是公司的奖励标准:在新版本的函数公式出来之前,我们需要使用IF函数公式来解决1、IF函数公式IF函数公式由三个参数组成,IF(判断条件,对的时候返...
- Excel不用函数公式数据透视表,1秒完成多列项目汇总统计
-
如何将这里的多组数据进行汇总统计?每组数据当中一列是不同菜品,另一列就是该菜品的销售数量。如何进行汇总统计得到所有的菜品销售数量的求和、技术、平均、最大、最小值等数据?不用函数公式和数据透视表,一秒就...
- 一周热门
- 最近发表
-
- Excel技巧:SHEETSNA函数一键提取所有工作表名称批量生产目录
- Excel HOUR函数:“小时”提取器_excel+hour函数提取器怎么用
- Filter+Search信息管理不再难|多条件|模糊查找|Excel函数应用
- FILTER函数介绍及经典用法12:FILTER+切片器的应用
- office办公应用网站推荐_office办公软件大全
- WPS/Excel职场办公最常用的60个函数大全(含卡片),效率翻倍!
- 收藏|查找神器Xlookup全集|一篇就够|Excel函数|图解教程
- 批量查询快递总耗时?用Excel这个公式,自动计算揽收到签收天数
- Excel函数公式教程(490个实例详解)
- Excel(WPS表格)Tocol函数应用技巧案例解读,建议收藏备用!
- 标签列表
-
- 外键约束 oracle (36)
- oracle的row number (32)
- 唯一索引 oracle (34)
- oracle in 表变量 (28)
- oracle导出dmp导出 (28)
- 多线程的创建方式 (29)
- 多线程 python (30)
- java多线程并发处理 (32)
- 宏程序代码一览表 (35)
- c++需要学多久 (25)
- css class选择器用法 (25)
- css样式引入 (30)
- css教程文字移动 (33)
- php简单源码 (36)
- php个人中心源码 (25)
- php小说爬取源码 (23)
- 云电脑app源码 (22)
- html画折线图 (24)
- docker好玩的应用 (28)
- linux有没有pe工具 (34)
- 可以上传视频的网站源码 (25)
- 随机函数如何生成小数点数字 (31)
- 随机函数excel公式总和不变30个数据随机 (33)
- 所有excel函数公式大全讲解 (22)
- 有动图演示excel函数公式大全讲解 (32)
