Cena马 发表于 2010-6-24 22:09

关于EMD算法端点问题处理的讨论

研究emd算法有一段时间了,关于其中端点效应的处理不知道大家认同哪种方法。Rilling给的程序用的好像是镜像极值延拓算法,我参考基于波形匹配和基于支持向量机延拓的方法编写了两种关于端点处理的程序,并对一个仿真信号做了分解。结果我附在了图中(1为用rilling的程序,2为基于波形匹配,3为基于支持向量机,4为原始信号),通过比对我有了一些心得,基于波形匹配算法要针对的是一些规律性比较强的信号,对于规律性强的信号有着较强的优势,对于某些旋转机械故障振动信号的处理应该很有效。但是对于那些规律性不强的,优势就没那么明显了,而且当匹配不当时,延拓的信号和原信号结合处会导致出现新的极值点,就会给下面的迭代带来错误。而基于支持向量机延拓的算法适用性很广,但是由于每次迭代都要进行训练,而且参数优化也需要时间,所以运算时间应该是他最大的问题。像我分解的那个仿真信号,程序运行了大约1分多钟。我想问问大家对端点问题的处理都是用的什么方法。

stellar_yang 发表于 2010-6-25 12:18

目前用的Rilling的程序做的端点处理,做的是滚动轴承故障诊断,导师说效果不错,也就没改!

Cena马 发表于 2010-6-25 15:24

回复 板凳 stellar_yang 的帖子

哦,我也做过滚动轴承的实验,直接用rilling的分解后效果确实还可以。下面的图是用rilling的程序画的外圈故障轴承的三维时频图

Cena马 发表于 2010-6-25 21:21

大家公认的比较好的端点处理方法是哪种啊?

xiangyu537 发表于 2010-6-25 21:26

楼主的处理效果确实不错?可是为什么我的结果不好呢?是数据的原因?楼主可否帮忙发一份程序和数据给我?非常感谢邮箱xiangyu537@163.com   相互讨论学习

Cena马 发表于 2010-6-26 15:49

我把那个波形匹配延拓的程序贴出来吧,其中那个sigmatching_emd函数是我自己将rilling的程序简化的,没有那么多的设置选项了。程序还有很大的问题,只提供个思路。(说明:运行程序需要装有rilling的程序工具包,因为用到了他里面的几个函数)
clear
clc
tic
N=512;
fs=512;
t=0:1/fs:(N-1)/fs;
xinhao=cos(2*pi*5*t)+0.4*cos(2*pi*10*t)+0.9*sin(2*pi*25*t);
plot(xinhao);
title('原始信号');
xlabel('采样点数');
ylabel('幅值');
imf=sigmatching_emd(xinhao,,0); %对信号进行基于波形匹配的emd分解,其中是用rilling的迭代条件,0为不显示分解过程,1为显示分解过程。
plot_emd_result(imf);
toc

xiangyu537 发表于 2010-6-26 16:24

该图是实际轴承外圈故障数据的分析结果吗?

Cena马 发表于 2010-6-26 17:07

对,是的,效果还可以!

Cena马 发表于 2010-6-26 19:00

回复 11楼 xiangyu537 的帖子

处理轴承故障的我直接用的rilling的程序,因为我的程序运算时间太长了,你没装那个工具包吗?

xiangyu537 发表于 2010-7-1 16:25

麻烦楼主给出数据和程序啊,我试了几天也得不到那么好的结果,感谢

Cena马 发表于 2010-7-1 16:30

回复 13楼 xiangyu537 的帖子

程序已经贴出来了啊!

xiangyu537 发表于 2010-7-1 16:39

实在做不出你那样的效果,烦请帮忙

dzkt 发表于 2010-7-4 10:49

LZ真是强人啊,看了你的例子,真是佩服,我以前没学过信号处理,论文又选了这方面的,以后还望多多交流。

Cena马 发表于 2010-7-4 17:28

回复 12楼 xiangyu537 的帖子

你的数据贴出来,看看

dzkt 发表于 2010-7-15 10:18

回复 14楼 Cena马 的帖子

Cena马,你好,你那个波形匹配延拓的程序用实际数据运算过么,怎么运算不了啊
页: [1] 2 3 4 5 6 7
查看完整版本: 关于EMD算法端点问题处理的讨论