zwnewton 发表于 2010-6-9 13:11

【HHT改进算法】NHT的matlab实现

2009年黄鄂在他的论文“On Instantaneous Frequency"中提出了一种改善瞬时频率出现负值的方法,称为“规范化”过程。
基本思想是认为:IMF信号中的AM和FM会相互干扰,导致使用HT变换求出的瞬时频率中会出现负值。
他的解决方法就是:采用规范化过程,即模仿AM解调的过程,将IMF信号的AM调制信号通过“包络检波”的方法解调出来。
然后再对求出的FM信号用DQ法或者再应用Hilbert变换,这样能防止AM信号干扰瞬时频率。而通过“解调过程”的包络就代替原来Hilbert变换的幅值信号。

这种方法画出的频谱图要平滑很多。大家可以试试。

附件中实现了NHT。DQ法没有做。
用draw_nht可以实现画图。这个函数和nspab的用法很像。
nht函数中实现了规范化过程,返回信号是AM,瞬时频率,和FM信号
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
imf=emd(x);
draw_nht(imf(1:end-1,:),500,0,1400,8000);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

其实规范化过程,分解出AM,FM信号,可以激起我们对IMF信号本质的仔细考虑。


欢迎修改,拍砖。。。

[ 本帖最后由 zwnewton 于 2010-6-9 13:13 编辑 ]

cboboc 发表于 2010-6-24 16:41

回复 楼主 zwnewton 的帖子

你的nht程序中,再求瞬时频率的时候是不是不应该乘以采样频率啊 ?本身求出来的就已经是实际的瞬时频率了啊

ChaChing 发表于 2010-6-24 22:30

回复 楼主 zwnewton 的帖子

楼主介意直接将程序贴出吗?
不然这边打开都是乱码!

SMALLTIGER 发表于 2010-7-4 20:06

谢谢

谢谢分享!!!!!

nkdtxf 发表于 2010-7-30 21:54

下了,学习一下,谢谢楼主!

pandacute 发表于 2010-8-24 21:42

多谢楼主,下来试试看,呵呵。另外问一下大家,有没有谁建了有关HHT或EMD的讨论群啊,希望大家都加进来一起讨论,共同进步。

pandacute 发表于 2010-8-24 21:58

下下来的两个文件是.php的,改为.m文件后里面是一些其他内容,不是代码啊,楼主可否发一份给我chlhsh@163.com,谢谢俄

nkdtxf 发表于 2010-10-14 18:37

学习 一下

bangder_ing 发表于 2011-2-5 13:05

才开始学习,在收集资料

529899778 发表于 2011-11-30 11:36

用楼主分享的程序对仿真信号进行分解后得到的希尔伯特谱的谱线要平滑很多,非常感谢!

529899778 发表于 2011-12-1 17:55

回复 1 # zwnewton 的帖子

       楼主,你好,我试了将第23行至第31行程序comment,即不对AM和FM信号进行滤波,得到的希尔伯特谱相对进行滤波后得到的谱要差很多,所以不禁要问究竟是规范化后确实能得到更精确的瞬时频率还是因为经验性地进行滤波使得谱线更加平滑,现在正在验证规范化后得到的瞬时频率与用F. Auger的instfreq.m函数求得的瞬时频率,两者哪个更加接近通过经典方法求得的瞬时频率。

529899778 发表于 2011-12-1 17:56

回复 1 # zwnewton 的帖子

因为之前不进行规范化,而做适当的滤波也得到了效果不错的希尔伯特谱。

梦泉 发表于 2012-5-2 15:51

谢谢分享!

2120100281 发表于 2012-5-30 16:16

回复 13 # 梦泉 的帖子

很不错哦,学习了

lnhagongdaht 发表于 2012-6-11 14:38

感谢分享,我初学,正搜集资料。
页: [1] 2
查看完整版本: 【HHT改进算法】NHT的matlab实现