声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2113|回复: 13

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

[复制链接]
发表于 2007-4-14 14:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
看到了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个。信号绝对是实的。这是怎么回事啊?

评分

1

查看全部评分

回复
分享到:

使用道具 举报

发表于 2007-4-14 21:07 | 显示全部楼层
那你测试的信号中到底应该有几个IMF呢
发表于 2007-4-14 21:10 | 显示全部楼层
是不是新版的精度提高了?
终于有救了
发表于 2007-4-15 17:22 | 显示全部楼层
关于楼主提到的问题,我以前也注意到了(参见http://forum.vibunion.com/forum/ ... 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才一致。
所以我怀疑新版有误。请指教!
 楼主| 发表于 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。我不会贴图,只能语言描述了。
 楼主| 发表于 2007-4-16 16:55 | 显示全部楼层
我一开始发的帖子说,老板程序有8个IMF,新版有两个。那段数据是实测数据,所以我也不知道到底该有几个IMF。另外,对于如x=2+sin(2*pi*500*t);这样的数据,新版的程序运算会进入死循环,而老板的程序可以算出来。从我构造的数据分析结果来看,确实如huangyong87 所说,应该是新版的程序有误。
 楼主| 发表于 2007-4-20 19:02 | 显示全部楼层
今天我把新版的程序sx = abs(envmoy)./amp改成了sx = abs(envmoy).*amp,分析结果与老版的程序一样了。从理论分析和数据实验来看,新版程序确实是错了。建议大家把程序都改回来。否则测的数据都是无效的。

评分

1

查看全部评分

发表于 2007-4-20 20:51 | 显示全部楼层

回复 #7 playfish 的帖子

:handshake 这是明显的错误,我一直用2005年五月的版本,看来是有点落后了!楼主的细心和好心是值得我尊敬的。这也提醒我们要有谨慎的态度。
发表于 2007-4-21 21:38 | 显示全部楼层
支持
发表于 2007-4-22 14:41 | 显示全部楼层
在哪能找到2005年五月的版本呢?谢谢
发表于 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的表达式和你所看到的新版不一样,难道是我下载到的是修改过的程序?
发表于 2007-10-25 10:54 | 显示全部楼层

回复 #11 batizhang 的帖子

新版已经就这个问题修改过了
发表于 2007-10-25 10:57 | 显示全部楼层

回复 #12 zhangnan3509 的帖子

哦,那请问我看到的版本(如上所述)是不是最新版的啊?
发表于 2007-10-25 11:01 | 显示全部楼层

回复 #13 batizhang 的帖子

最新版你可以看看flandrin的主页上有没有最近的更新程序,我想你手边的版本是修改后的。
主页是http://perso.ens-lyon.fr/patrick.flandrin/emd.html
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-6 09:29 , Processed in 0.070816 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表