声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 5612|回复: 23

[HHT] 请教关于disp_hhs作图的问题,急

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

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

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

x
搞了两天,实在没弄明白,没办法,又上来求助了,实在不好意思.
以下是小弟练习作hht谱图用的小程序:
clear
fs=1000.1;%采样频率
t=0:10/1000:10;&共1001个数据点,一共采了10秒
x=exp(-0.3*t).*cos(pi*t.^2+2*pi*t);
plot(t,x);%原始数据序列
imf=emd(x);
emd_visu(x,1:length(x),imf);
[A,f,tt]=hhspectrum(imf);
[im,tt]=toimage(A,f);
disp_hhs(im,[],fs);
untitled.jpg
这是我画出的图,纵坐标表示的是真实频率(不是规则化频率),横坐标就不对了,我想让横坐标显示真实的时间,即从0到10.该怎么做?
我把disp_hhs(im) ; disp_hhs(im,t) ; disp_hhs(im,inf)
      disp_hhs(im,t,inf) ; disp_hhs(im,inf,fs) ; disp_hhs(im,[],fs); disp_hhs(im,t,inf,fs)
这些命令全用了,还是得不到横坐标为真实时间,纵坐标为真实频率的图.我感觉应该使用disp_hhs(im,[],fs)这条命令.
但是disp_hhs(im,t,[],fs) ; disp_hhs(im,t,inf,fs)这两条命令,运行后提示:Too many input arguments.
请问我该如何达到目的?问题可能很弱弱,烦请达人指点一下.
回复
分享到:

使用道具 举报

发表于 2007-6-20 11:54 | 显示全部楼层

回复 #1 laughing 的帖子

直接到Figure的Edit菜单中修改axes properties!
 楼主| 发表于 2007-6-20 14:33 | 显示全部楼层

不才刚才按您的意思改了一下,觉得还是不对.
设置x轴的范围是0:10,结果出来的图为原图的局部放大.
untitled.jpg
 楼主| 发表于 2007-6-20 14:38 | 显示全部楼层

回复 #2 zhlong 的帖子

还有个问题,就是
运行disp_hhs(im,t,[],fs) ; disp_hhs(im,t,inf,fs)这两条命令,运行后提示:Too many input arguments
怎么回事?
发表于 2007-6-20 14:40 | 显示全部楼层
set(gca,'xtick',[0:100:1000],'xticklabel',[0:1:10])

评分

1

查看全部评分

 楼主| 发表于 2007-6-20 14:50 | 显示全部楼层

回复 #5 w89986581 的帖子

多谢了:)
可是,谁能告诉我,运行disp_hhs(im,t,[],fs) ; disp_hhs(im,t,inf,fs)这两条命令,运行后提示:Too many input arguments
怎么回事?
发表于 2007-6-20 14:52 | 显示全部楼层

回复 #4 laughing 的帖子

输入宗量太多,help一下disp_hhs看看它的函数使用说明!
 楼主| 发表于 2007-6-21 23:34 | 显示全部楼层
disp_hhs(im,t,[],fs) ; disp_hhs(im,t,inf,fs)这两条命令就是disp_hhs的使用说明举的例子!
发表于 2010-4-20 15:24 | 显示全部楼层

回复 楼主 laughing 的帖子

楼主这个是怎样得到真实频率的呢,我按你的算法来运算,得出来的还是瞬时频率 啊 ?
发表于 2010-4-20 15:55 | 显示全部楼层
原帖由 laughing 于 2007-6-20 11:32 发表
搞了两天,实在没弄明白,没办法,又上来求助了,实在不好意思.
以下是小弟练习作hht谱图用的小程序:
clear
fs=1000.1;%采样频率
t=0:10/1000:10;&共1001个数据点,一共采了10秒
x=exp(-0.3*t).*cos(pi*t.^2+2*pi*t) ...


LZ,注意这一句???
我直接用楼主的代码,画出来的是这样的
pp.png

我记得disp_hhs的代码关于参数这一块好像有点bug,我以前修改过但忘记是哪个位置了,现贴出来,请参考。

  1. %DISP_HHS  display Hilbert-Huang spectrum
  2. % DISP_HHS(im,t,inf)
  3. % displays in a new figure the spectrum contained in matrix "im"
  4. % (amplitudes in dB).
  5. % inputs:  - im: image matrix (e.g., output of "toimage")
  6. %          - t (optional): time instants (e.g., output of "toimage")
  7. %          - inf (optional): -dynamic range in dB (wrt max)
  8. %            default: inf = -20
  9. %          - fs: sampling frequency
  10. % use:  disp_hhs(im) ; disp_hhs(im,t) ; disp_hhs(im,inf)
  11. %       disp_hhs(im,t,inf) ; disp_hhs(im,inf,fs) ; disp_hhs(im,[],fs)
  12. %       disp_hhs(im,t,[],fs) ; disp_hhs(im,t,inf,fs)
  13. %
  14. %
  15. % See also
  16. %  emd, hhspectrum, toimage
  17. %
  18. % G. Rilling, last modification 3.2007
  19. % gabriel.rilling@ens-lyon.fr
  20. function disp_hhs(varargin)
  21. error(nargchk(1,4,nargin));
  22. fs = 0;
  23. inf = -20;
  24. im = varargin{1};   
  25. t = 1:size(im,2);   
  26. switch nargin
  27.   case 1
  28.     %raf
  29.   case 2
  30.     if isscalar(varargin{2})   
  31.       inf = varargin{2};        
  32.     else   
  33.       t = varargin{2};         
  34.     end
  35.   case 3
  36.     if isvector(varargin{2})   
  37.       t = varargin{2};
  38.       inf = varargin{3};
  39.     else
  40.       inf = varargin{2};
  41.       fs = varargin{3};
  42.     end
  43.   case 4
  44.     t = varargin{2};
  45.     inf = varargin{3};
  46.     fs = varargin{4};
  47. end
  48. if isempty(inf)
  49.   inf = -20;
  50. end
  51. if inf > 0
  52.   inf = -inf;
  53. elseif inf == 0
  54.   error('inf must be nonzero')
  55. end
  56. M=max(max(im));
  57. warning off
  58. im = 10*log10(im/M);
  59. warning on
  60. figure
  61. if fs == 0
  62.   imagesc(t,[0,0.5],im,[inf,0]);
  63.   ylabel('normalized frequency')
  64. else
  65.   t=t/fs;
  66.   imagesc(t,[0,0.5*fs],im,[inf,0]);
  67.   ylabel('frequency')
  68. end
  69. set(gca,'YDir','normal')
  70. xlabel('time')
  71. title('Hilbert-Huang spectrum')

复制代码


是否应该是这样的?

[ 本帖最后由 bcyangbc 于 2010-4-20 16:02 编辑 ]
pp.png
发表于 2010-4-20 18:59 | 显示全部楼层

回复 10楼 bcyangbc 的帖子

原来代码里error(nargchk(1,4,nargin))处,是 error(nargchk(1,3,nargin)).但楼主输入的是三参数,应该此处没有影响吧
发表于 2010-4-20 20:17 | 显示全部楼层

回复 11楼 franciscowu 的帖子

是的,可以用3个或4个参数,对结果没有影响。我想这里也就是3楼出现错误的原因

[ 本帖最后由 bcyangbc 于 2010-4-20 20:20 编辑 ]
发表于 2010-5-19 17:12 | 显示全部楼层
else
  t=t/fs;
  imagesc(t,[0,0.5*fs],im,[inf,0]);
  ylabel('frequency')

此处 t=t/fs; 将时间轴还原, 楼主说的问题通过这个应该就解决了。
发表于 2010-5-19 21:21 | 显示全部楼层
想对IMF1和IMF2做Hilbert谱分析
程序如下  感觉不对 求高人指点
imf = emd(ss);
emd_visu(ss,imf)
for j=1:2
[A,f,tt]=hhspectrum(imf(j,:));
end
axis([0 1024 0 0.1])
[im,tt]=toimage(A,f);
disp_hhs(im,[],fs);
axis([0 512 0 6000])
set(gca,'YDir','normal')
colormap(flipud(hot));
发表于 2010-5-20 10:21 | 显示全部楼层
imf = emd(ss);
emd_visu(ss,imf)
for j=1:2
[A,f,tt]=hhspectrum(imf(j,:));
%axis([0 1024 0 0.1])
[im,tt]=toimage(A,f);
disp_hhs(im,[],fs);
%axis([0 512 0 6000])
%set(gca,'YDir','normal')
%colormap(flipud(hot));
end
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-9-21 01:35 , Processed in 0.065179 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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