JulianChin 发表于 2007-4-12 22:01

[更新版]要了命了——G. Rilling的EMD的Matlab程序的“倒霉结果”

% G. Rilling, last update: May 2005
%
% computes EMD (Empirical Mode Decomposition) according to:
%
% N. E. Huang et al., "The empirical mode decomposition and the
% Hilbert spectrum for non-linear and non stationary time series analysis",
% Proc. Royal Soc. London A, Vol. 454, pp. 903-995, 1998
%
% with variations reported in:
%
% G. Rilling, P. Flandrin and P. Gon峚lv弒
% "On Empirical Mode Decomposition and its algorithms",
% IEEE-EURASIP Workshop on Nonlinear Signal and Image Processing
% NSIP-03, Grado (I), June 2003


我不知道法国人的程序更新了没有,反正这个是一个月前下的

本人研一,研究EMD有半年多了,菜鸟一个,自己很久以前编过EMD程序,不过性能太滥,主要是边界和SD问题处理不好,后来发现了G. Rilling的程序,自己改了一下,处理了一下我的水声的非稳态信号,觉得这个程序的边界问题和终止条件问题解决的看起来挺漂亮(至少比我的强多了),不过用普通的调幅和调频波试了一下。。。。。。。

运行:imf = emd(x,'stop',,'maxiterations',100);

一 y=sin(x/50)
这个函数处理得很老实,没给我分解,直接输出的原函数,我很欣慰呀

二 y=3*cos(2*pi*x/100+sin(2*pi*x/1000))

这个也输出的是原函数

三 y=0.2*sin(x/130).*sin(x/10)

这个函数一看运行结果,可要了命了,给我分出了六个IMF分量,根据本人的微薄经验,这个函数没法分,顶多分两份,可是这六个分量非常诡异,后来一看,第一个分量与原信号外形和周期基本一样!也就是说剩下5个IMF加上residue值为零!
本来想把原信号和六个IMF波形上传,可惜这个论坛传图片很难,作罢

[ 本帖最后由 JulianChin 于 2007-4-12 22:52 编辑 ]

eight 发表于 2007-4-12 22:21

原帖由 JulianChin 于 2007-4-12 22:01 发表
% G. Rilling, last update: May 2005
%
% computes EMD (Empirical Mode Decomposition) according to:
%
% N. E. Huang et al., "The empirical mode decomposition and the
% Hilbert spectrum f ...


很正常,没看出什么问题

JulianChin 发表于 2007-4-12 22:36

四 y=sin(2*pi*x*0.005)+sin(2*pi*(x-100)*0.05)

这个原信号给我分出了四个IMF,第一个是高频正弦波,很好,第二个貌似低频正弦波,不过边界部分矮了点,第二部分和第三第四外加residue加起来似乎正好是标准低频正弦波。。。。


波形图片实在传不上来。。。。。

JulianChin 发表于 2007-4-12 22:43

五 y=(3+3*cos(2*pi*x/100))*cos(2*pi*x/10)

9个IMf分量,情况与“三”相似,有种被耍的感觉

JulianChin 发表于 2007-4-12 22:48

言归正传,痛定思痛,分析了一下问题,或许可能有

1 对于傅立叶变换等传统方法,有个测不准原理,号称自适应的EMd就没有么,不尽然把,边界问题就是其中体现之一,比如“镜像延陀法”似乎就是希望通过加长信号抵消测不准原理,但是仍然不尽人意比如 y=sin(2*pi*x*0.005)+sin(2*pi*(x-100)*0.05)的第二个分量,就不是一个标准正弦波,问题就出在边界!

JulianChin 发表于 2007-4-12 22:49

2 终止条件问题,改停止时不停止,不过我改了一些终止条件,但似乎程序对此不甚敏感

[ 本帖最后由 JulianChin 于 2007-4-12 23:09 编辑 ]

JulianChin 发表于 2007-4-12 23:10

IMF

[ 本帖最后由 JulianChin 于 2007-4-12 23:11 编辑 ]

JulianChin 发表于 2007-4-12 23:19

3 当年我编的烂程序,虽然边界一塌糊涂,但两个正弦信号的叠加还是能分开的,IMF分量一点不多一点不少,而这个 G. Rilling的“高级程序”虽然边界很漂亮,但似乎连这样的信号都分不准,难道是测不准原理作怪?

[ 本帖最后由 JulianChin 于 2007-4-12 23:29 编辑 ]

eight 发表于 2007-4-12 23:47

EMD的测不准原理我不敢说存在还是不存在,但至少现在这个时候不明显(因为EMD还没有理论支撑)。你得到的结果我也相信是正确的,也是正常的,目前的EMD都是近似算法(假设背后有理论支撑),因此分解不唯一(改变算法的某个步骤会导致不同的结果),也会出现一些虚假的IMF(在Flandrin的PPT里面那个例子就很好的说明了这点),这没有什么奇怪的。正如理论上 3=1+2 , 在这个恒等式未知、未被发现之前, 3=1.2+2.1 或者 3=1.1+2.2 都是合理的。建议先看看本版关于EMD的一些帖子,尤其是版主的总结

JulianChin 发表于 2007-4-13 01:11

原帖由 eight 于 2007-4-12 23:47 发表
EMD的测不准原理我不敢说存在还是不存在,但至少现在这个时候不明显(因为EMD还没有理论支撑)。你得到的结果我也相信是正确的,也是正常的,目前的EMD都是近似算法(假设背后有理论支撑),因此分解不唯一(改 ...

连调幅波都分解不准怎么放心用?

有没有改进的办法?

JulianChin 发表于 2007-4-13 01:54

对于信号“三”,“四”的“灵异”问题怎么解决,我现在的课题非常需要EMD这种算法的支持

liliang 发表于 2007-4-22 22:58

我仿真时出现7个左右的imf 函数,为什么?是我的emd分解算法不好吗?

JulianChin 发表于 2007-4-23 01:21

rilling的新版程序还不错,但模态混叠是任何算法都避免不了的,没办法

gsq 发表于 2007-4-27 17:35

大家谁那里有这方面.m的程序,能给小弟发一个吗?先谢谢啦,我怎么也找不到,哎

wang07_01 发表于 2014-11-10 19:36

学习中!!!
页: [1] 2
查看完整版本: [更新版]要了命了——G. Rilling的EMD的Matlab程序的“倒霉结果”