声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1026|回复: 3

[HHT] 高手帮忙看看!谢谢

[复制链接]
发表于 2010-3-31 20:20 | 显示全部楼层 |阅读模式

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

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

x
因为国立中央大学的程序没有给出话希尔伯特普图的程序,所以我想用国立中央大学的瞬时频率程序求出瞬时频率,然后画出谱图,我写了个程序,但是运行的时候错误很多,不出结果,请各位帮我看看!程序如下:
>> clear
>> fs=200;
>> t=0:1/fs:1;
>> s=cos(10*pi*t)+2*cos(40*pi*t);
>> allmode=eemd(s,0,1);
>> for i=2:(size(allmode,1)-1)
omega(i,:)=ifndq(allmode(i,:),1/fs)
f(i,:)=omega(i,:)/2*pi
abs_allmode(i,:)=allmode(i,:)
for j=1:length(t)
abs_allmode(i,:)=allmode(i,:)
if abs_allmode(i,:)<0
abs_allmode(i,:)=-allmode(i,:)
end
end
Nnormal=5
  for jj=1:Nnormal
[spmax,spmin,plag]=extrema(abs_allmode(i,:))
dd=1:length(t)
upper=spline(spmax(:,1),spmax(:,2),dd)
for k=1:length(t)
abs_allmode(k)=abs_allmode(k)/upper(k)
end
  end
A=abs_allmode(i:2:length(t)-1)
[im,tt]=toimage(A,f);%画出希尔伯特谱
disp_hhs(im);
回复
分享到:

使用道具 举报

发表于 2010-4-6 19:30 | 显示全部楼层
(1)        ifndq函数的输入应该是一个一个IMF,而您的输入为不准确。
(2)        Nnormal=5 %  why choose Nnormal=5? 是不是利用ifndq函数中的默认值!
(3)        jj=1:Nnormal  这个参数在后面的程序中 并没有用到!

[ 本帖最后由 杨德昌 于 2010-4-6 21:31 编辑 ]
 楼主| 发表于 2010-4-7 08:11 | 显示全部楼层

回复 沙发 杨德昌 的帖子

omega(i,:)=ifndq(allmode(i,:),1/fs),这里的allmode(i,:)就表示第i个imf 啊 也就是一个imf啊 。还有就是Nnormal就是经验上要循环5次啊。
发表于 2010-4-8 21:43 | 显示全部楼层
兄弟 你的程序运行结束后,allmode是一个201行*8列的矩阵,
而allmode(i,:)表示第i行的所有列吧,而allmode中的i行的所有列 不是一个imf,
其中的i列中的所有行才是一个imf 。
这就是后面你出错的原因!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-30 02:14 , Processed in 0.080605 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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