声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 4350|回复: 22

[HHT] HHT分析实例;请高人指导

  [复制链接]
发表于 2011-11-25 10:32 | 显示全部楼层 |阅读模式

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

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

x
对一简单的信号做HHT分析,该信号含有两个频率成分10Hz和35Hz,得到的希尔伯特谱(二维)纵轴的频率怎么不是10和35;程序和图像如下:
N=2048;
t=linspace(0,1,N);
delta=t(2)-t(1); % 采样周期
fs=1/delta;      % 采样频率
s=5*sin(2*pi*10*t)+5*sin(2*pi*35*t);
imf=emd(s);
[A,fa,tt]=hhspectrum(imf);
[E,tt1,Cenf]=toimage(A,fa);
figure;
myimage(E,'2D');   % 画出二维希尔伯特谱
figure;
myimage(E,'3D');   %三维

11.bmp
                                                           图1 原始信号
12.bmp
                                                          图2 经验模态分解
13.bmp
                                                      图3 二维HHT频谱
回复
分享到:

使用道具 举报

发表于 2011-11-25 10:49 | 显示全部楼层
应该可以分开吧,IMF余量能量不大
 楼主| 发表于 2011-11-25 14:22 | 显示全部楼层
可以分出来,imf1的频率为35Hz,imf2的频率为10Hz;但是在第三个图中,红色线条的纵坐标应该有很明显的两个:一个是35,一个是10。怎么做呢?
发表于 2011-11-27 18:19 | 显示全部楼层
频率太接近了,换一个差距大一点的会好一些
 楼主| 发表于 2011-11-29 20:06 | 显示全部楼层
回复 4 # zhangnan3509 的帖子

假如是s=5*sin(2*pi*50*t)+5*sin(2*pi*200*t);的话,出来的怎么一个是对应20,一个对应80呢?
发表于 2011-12-5 22:52 | 显示全部楼层
回复 1 # zhangshun5233 的帖子

建议楼主把myimage的代码发出来看看,这样才能更好的解决问题,呵呵!~
发表于 2011-12-5 23:41 | 显示全部楼层
需要myimage的函数,楼主发我一个,zhangjianjohnny@gmail.com
 楼主| 发表于 2011-12-7 11:19 | 显示全部楼层
本帖最后由 zhangshun5233 于 2011-12-7 11:20 编辑

“myimage”,我曾经在这个论坛里面找的,顺便谢谢那个楼主哦,忘记是谁了哈~
  1. function h=myimage(dummyCoefs,plotmode,cmap)
  2. % MYIMAGE 3-D visualization of coefficients.
  3. % DUMMYCOEFS is the coefficients matrix to be visualized.
  4. % Coefficients are colored using PLOTMODE.
  5. % PLOTMODE = 'lvl' (By scale) or
  6. % PLOTMODE = 'glb' (All scales) or
  7. % PLOTMODE = 'abslvl' or 'lvlabs' (Absolute value and By scale) or
  8. % PLOTMODE = 'absglb' or 'glbabs' (Absolute value and All scales)
  9. %
  10. % MYIMAGE(...,'plot') is equivalent to MYIMAGE(...,'absglb')
  11. %
  12. % You get 3-D plots (surfaces) using the same keywords listed
  13. % above for the PLOTMODE parameter, preceded by '3D'. For example:
  14. % MYIMAGE(...,'3Dplot') or MYIMAGE(...,'3Dlvl').
  15. % H is the figure handle.
  16. %----------------------------------------------------------------------
  17. if nargin==1
  18. plotmode='plot';
  19. cmap=colormap(jet(240));
  20. end
  21. if nargin==2
  22. cmap=colormap(jet(240));
  23. end
  24. NBC = 240;
  25. if strmatch('3D',plotmode)
  26. dim_plot = '3D';
  27. else
  28. dim_plot = '2D';
  29. end
  30. switch plotmode
  31. case {'lvl','3Dlvl'}
  32. lev_mode = 'row';
  33. abs_mode = 0;
  34. case {'glb','3Dglb'}
  35. lev_mode = 'mat';
  36. abs_mode = 0;
  37. case {'abslvl','lvlabs','3Dabslvl','3Dlvlabs'}
  38. lev_mode = 'row';
  39. abs_mode = 1;
  40. case {'absglb','glbabs','plot','2D','3Dabsglb','3Dglbabs','3Dplot','3D'}
  41. lev_mode = 'mat';
  42. abs_mode = 1;
  43. otherwise
  44. plotmode = 'absglb';
  45. lev_mode = 'mat';
  46. abs_mode = 1;
  47. dim_plot = '2D';
  48. end
  49. if abs_mode , dummyCoefs = abs(dummyCoefs); end
  50. plotPARAMS = {NBC,lev_mode,abs_mode,cmap};
  51. switch dim_plot
  52. case '2D'
  53. axeAct = gca;
  54. plotCOEFS(axeAct,dummyCoefs,plotPARAMS);
  55. h=axeAct;
  56. case '3D'
  57. axeAct = gca;
  58. surfCOEFS(axeAct,dummyCoefs,plotPARAMS);
  59. h=axeAct;
  60. end
  61. %----------------------------------------------------------------------
  62. function plotCOEFS(axeAct,coefs,plotPARAMS)
  63. [NBC,lev_mode,abs_mode,cmap] = deal(plotPARAMS{:});
  64. coefs = wcodemat(coefs,NBC,lev_mode,abs_mode);
  65. img = image(coefs);
  66. set(axeAct,'YDir','normal','Box','On');
  67. title('Matrix''s 2-D Visualization','Parent',axeAct);
  68. xlabel('time','Parent',axeAct);
  69. ylabel('frequency','Parent',axeAct);
  70. colormap(cmap);
  71. %----------------------------------------------------------------------
  72. function surfCOEFS(axeAct,coefs,plotPARAMS)
  73. [NBC,lev_mode,abs_mode,cmap] = deal(plotPARAMS{:});
  74. img = surf(coefs);
  75. set(axeAct,'YDir','normal','Box','On');
  76. title('Matrix''s 3-D Visualization','Parent',axeAct);
  77. xlabel('time','Parent',axeAct);
  78. ylabel('frequency','Parent',axeAct);
  79. zlabel('amplitude','Parent',axeAct);
  80. xl = [1 size(coefs,2)];
  81. yl = [1 size(coefs,1)];
  82. zl = [min(min(coefs)) max(max(coefs))];
  83. set(axeAct,'Xlim',xl,'Ylim',yl,'Zlim',zl,'view',[-30 35]);
  84. colormap(cmap);
  85. shading('interp')
复制代码

 楼主| 发表于 2011-12-7 11:20 | 显示全部楼层
回复 7 # zhangjian123q1 的帖子

已经贴出来了~
发表于 2011-12-12 23:27 | 显示全部楼层
你的IMF 就没有筛选好 你在筛选一下 就可以分开 用归一化IMF和原信号的相关系数 来筛选IMf
发表于 2011-12-12 23:38 | 显示全部楼层
C:\Users\Administrator\Desktop
发表于 2011-12-12 23:40 | 显示全部楼层
呵呵 新手 不会传图片 不是很清楚 楼主这就是筛选后的结果

发表于 2013-4-8 10:00 | 显示全部楼层
发表于 2013-4-9 11:52 | 显示全部楼层
我看看代码,找找原因
发表于 2013-4-23 22:36 | 显示全部楼层
楼主加上这段代码试试看

for k=1:size(E,1)
bjp(k)=sum(E(k,:))*1/fs;
end
figure;
plot(Cenf(1,:)*fs,bjp);
xlabel('频率 / Hz');
ylabel('幅值');
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-24 07:24 , Processed in 0.102629 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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