|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
本人这个学期的毕业设计与HHT在轨道检测中的应用有关,刚接触这个方面的东西感觉还蛮有兴趣的,本人不久前将于德介老师的《机械故障诊断的Hibert-Huang变换方法》大致看了下,对EMD、IMF和HHT等概念有了一些基本的了解,这几天天天在泡论坛,想通过Matlab将上书中的一些简单仿真信号的处理自己实现一遍,例如书中P29的仿真信号:
x(t)=2*sin(30*pi*t)+4*sin(20*pi*t).*sin(2*pi*1/10*t)+sin(2*pi*5*t),t∈[0,1]
我的matlab程序如下(很多参照了论坛中达人提供的程序):
T=0:0.01:1;
x=2*sin(30*pi*T)+4*sin(20*pi*T).*sin(2*pi*1/10*T)+sin(2*pi*5*T);
plot(T,x) %绘出仿真波形图,如图1
OPTIONS.DISPLAY=2;
OPTIONS.T=0:0.01:1;
imf=emd(x,OPTIONS);
emd_visu(x,0:0.01:1,imf) %绘出各个IMF波形,如图2
[A,f,tt]=hhspectrum(imf);
[im,tt]=toimage(A,f);
disp_hhs(im,[],100);
colormap(flipud(gray)) %绘出Hilbert谱,如图3
从仿真信号的函数可以看到理论上对信号EMD分解出来应该是一个15hz的正弦信号、一个5hz的正弦信号和一个10hz的调幅信号,可是在图2中一共得到了4个IMF和一个residue,而且前3个IMF的效果很差,比书上给的EMD分解图效果差很多,第2个IMF几乎没有调幅的特征了,我不知道是我做的EMD分解过程有误还是这就是EMD的端点效应问题?要是是端点效应的问题话,不知道用Matlab该如何实现抑制端点效应?
还有我用disp_hhs(im,[],100)语句倒是把hilbert谱的纵坐标转换成了实际频率(采样频率100hz),或者可以单独把hilbert谱的横坐标转换成实际时间,但不知道怎么同时把两个坐标都转换成实际的,我想通过disp_hhs(im,tt,[],100)(tt=0:0.01:1)同时将两坐标转换过来,但会有错误,提示说输入参数数量太多了。。。搞了半天不知道该怎么解决这个问题。。。
[ 本帖最后由 Snikas 于 2008-4-12 19:50 编辑 ] |
|