playfish 发表于 2007-4-14 14:28

关于新旧版emd程序的一些疑问

看到了emd新版的程序,仔细分析了以下,发现主要是加入了复信号的分析,实信号部分基本没有改动,除了那个判断条件的修改。在老版的程序中的语句是这样的sx=2*(abs(envmoy))./(abs(envmax-envmin));
新版的程序先做了amp =2./mean(abs(envmax-envmin),1);
然后sx = abs(envmoy)./amp;
其实就是把原来的式子拆成了两半。其他的部分,如extr,boundary_condition函数都没有变。
现在问题来了,同样的一段数据,老版的程序分出了8个imf,新版的只分出了2个。信号绝对是实的。这是怎么回事啊?

xcsyb 发表于 2007-4-14 21:07

那你测试的信号中到底应该有几个IMF呢

JulianChin 发表于 2007-4-14 21:10

是不是新版的精度提高了?
终于有救了

huangyong87 发表于 2007-4-15 17:22

关于楼主提到的问题,我以前也注意到了(参见http://forum.vibunion.com/forum/viewthread.php?tid=38891&extra=page%3D1&page=4)。
我认为对于实信号,新版的处理并非如楼主所说,把原来的式子拆成了两半。请仔细看看:
老版的程序中的语句是:sx=2*(abs(envmoy))./(abs(envmax-envmin));
新版的程序先做了amp =2./mean(abs(envmax-envmin),1);然后sx = abs(envmoy)./amp;变成了sx = abs(envmoy)./2*mean(abs(envmax-envmin),1);若是sx = abs(envmoy).*amp才一致。
所以我怀疑新版有误。请指教!

playfish 发表于 2007-4-16 16:48

哦,呵呵,不好意思,看走眼了。确实如楼上所说。应该是sx = abs(envmoy).*amp。我又测试了几组数据。测试信号是
x=(1+0.5*sin(2*pi*10.*t)).*cos(2*pi*60.*t+0.5*sin(2*pi*30.*t))+sin(2*pi*200.*t)
即一个调幅调频波加上一个单频正弦波。数据长度2048,采样率fs分别设成1000,2000,。。。,10000
老版的程序在fs=6000hz以前可以完美的分解出两个信号分量。6000hz以后才由于采样率过高,导致波形长度太短造成有虚假IMF出现。而新版的程序无论如何也不能正确分解出两个信号分量,总是有低频虚假IMF。我不会贴图,只能语言描述了。

playfish 发表于 2007-4-16 16:55

我一开始发的帖子说,老板程序有8个IMF,新版有两个。那段数据是实测数据,所以我也不知道到底该有几个IMF。另外,对于如x=2+sin(2*pi*500*t);这样的数据,新版的程序运算会进入死循环,而老板的程序可以算出来。从我构造的数据分析结果来看,确实如huangyong87 所说,应该是新版的程序有误。

playfish 发表于 2007-4-20 19:02

今天我把新版的程序sx = abs(envmoy)./amp改成了sx = abs(envmoy).*amp,分析结果与老版的程序一样了。从理论分析和数据实验来看,新版程序确实是错了。建议大家把程序都改回来。否则测的数据都是无效的。

zhangnan3509 发表于 2007-4-20 20:51

回复 #7 playfish 的帖子

:handshake 这是明显的错误,我一直用2005年五月的版本,看来是有点落后了!楼主的细心和好心是值得我尊敬的。这也提醒我们要有谨慎的态度。

liliang 发表于 2007-4-21 21:38

支持

liliang 发表于 2007-4-22 14:41

在哪能找到2005年五月的版本呢?谢谢

batizhang 发表于 2007-10-25 10:52

回复 #7 playfish 的帖子

我在emd程序看到的和你不一样啊,新版的是这样写的:amp =mean(abs(envmax-envmin),1)/2;然后sx = abs(envmoy)./amp,这样得到的最后结果是sx = 2*(abs(envmoy))./mean((abs(envmax-envmin)),1);没有错吧?也就是说在amp的表达式和你所看到的新版不一样,难道是我下载到的是修改过的程序?

zhangnan3509 发表于 2007-10-25 10:54

回复 #11 batizhang 的帖子

新版已经就这个问题修改过了

batizhang 发表于 2007-10-25 10:57

回复 #12 zhangnan3509 的帖子

哦,那请问我看到的版本(如上所述)是不是最新版的啊?

zhangnan3509 发表于 2007-10-25 11:01

回复 #13 batizhang 的帖子

最新版你可以看看flandrin的主页上有没有最近的更新程序,我想你手边的版本是修改后的。
主页是http://perso.ens-lyon.fr/patrick.flandrin/emd.html
页: [1]
查看完整版本: 关于新旧版emd程序的一些疑问