laughing 发表于 2007-6-20 11:32

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

搞了两天,实在没弄明白,没办法,又上来求助了,实在不好意思.
以下是小弟练习作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);
=hhspectrum(imf);
=toimage(A,f);
disp_hhs(im,[],fs);

这是我画出的图,纵坐标表示的是真实频率(不是规则化频率),横坐标就不对了,我想让横坐标显示真实的时间,即从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.
请问我该如何达到目的?问题可能很弱弱,烦请达人指点一下.

zhlong 发表于 2007-6-20 11:54

回复 #1 laughing 的帖子

直接到Figure的Edit菜单中修改axes properties!

laughing 发表于 2007-6-20 14:33

原帖由 zhlong 于 2007-6-20 11:54 发表 http://www.chinavib.com/forum/images/common/back.gif
直接到Figure的Edit菜单中修改axes properties!
不才刚才按您的意思改了一下,觉得还是不对.
设置x轴的范围是0:10,结果出来的图为原图的局部放大.

laughing 发表于 2007-6-20 14:38

回复 #2 zhlong 的帖子

还有个问题,就是
运行disp_hhs(im,t,[],fs) ; disp_hhs(im,t,inf,fs)这两条命令,运行后提示:Too many input arguments
怎么回事?

w89986581 发表于 2007-6-20 14:40

set(gca,'xtick',,'xticklabel',)

laughing 发表于 2007-6-20 14:50

回复 #5 w89986581 的帖子

多谢了:)
可是,谁能告诉我,运行disp_hhs(im,t,[],fs) ; disp_hhs(im,t,inf,fs)这两条命令,运行后提示:Too many input arguments
怎么回事?

zhlong 发表于 2007-6-20 14:52

回复 #4 laughing 的帖子

输入宗量太多,help一下disp_hhs看看它的函数使用说明!

laughing 发表于 2007-6-21 23:34

disp_hhs(im,t,[],fs) ; disp_hhs(im,t,inf,fs)这两条命令就是disp_hhs的使用说明举的例子!

cboboc 发表于 2010-4-20 15:24

回复 楼主 laughing 的帖子

楼主这个是怎样得到真实频率的呢,我按你的算法来运算,得出来的还是瞬时频率 啊 ?

bcyangbc 发表于 2010-4-20 15:55

原帖由 laughing 于 2007-6-20 11:32 发表 http://www.chinavib.com/forum/images/common/back.gif
搞了两天,实在没弄明白,没办法,又上来求助了,实在不好意思.
以下是小弟练习作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,注意这一句???
我直接用楼主的代码,画出来的是这样的


我记得disp_hhs的代码关于参数这一块好像有点bug,我以前修改过但忘记是哪个位置了,现贴出来,请参考。
%DISP_HHSdisplay Hilbert-Huang spectrum
% DISP_HHS(im,t,inf)
% displays in a new figure the spectrum contained in matrix "im"
% (amplitudes in dB).
% inputs:- im: image matrix (e.g., output of "toimage")
%          - t (optional): time instants (e.g., output of "toimage")
%          - inf (optional): -dynamic range in dB (wrt max)
%            default: inf = -20
%          - fs: sampling frequency
% use: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,[],fs) ; disp_hhs(im,t,inf,fs)
%
%
% See also
%emd, hhspectrum, toimage
%
% G. Rilling, last modification 3.2007
% gabriel.rilling@ens-lyon.fr
function disp_hhs(varargin)
error(nargchk(1,4,nargin));
fs = 0;
inf = -20;
im = varargin{1};   
t = 1:size(im,2);   
switch nargin
case 1
    %raf
case 2
    if isscalar(varargin{2})   
      inf = varargin{2};      
    else   
      t = varargin{2};         
    end
case 3
    if isvector(varargin{2})   
      t = varargin{2};
      inf = varargin{3};
    else
      inf = varargin{2};
      fs = varargin{3};
    end
case 4
    t = varargin{2};
    inf = varargin{3};
    fs = varargin{4};
end
if isempty(inf)
inf = -20;
end
if inf > 0
inf = -inf;
elseif inf == 0
error('inf must be nonzero')
end
M=max(max(im));
warning off
im = 10*log10(im/M);
warning on
figure
if fs == 0
imagesc(t,,im,);
ylabel('normalized frequency')
else
t=t/fs;
imagesc(t,,im,);
ylabel('frequency')
end
set(gca,'YDir','normal')
xlabel('time')
title('Hilbert-Huang spectrum')



是否应该是这样的?

[ 本帖最后由 bcyangbc 于 2010-4-20 16:02 编辑 ]

franciscowu 发表于 2010-4-20 18:59

回复 10楼 bcyangbc 的帖子

原来代码里error(nargchk(1,4,nargin))处,是 error(nargchk(1,3,nargin)).但楼主输入的是三参数,应该此处没有影响吧

bcyangbc 发表于 2010-4-20 20:17

回复 11楼 franciscowu 的帖子

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

[ 本帖最后由 bcyangbc 于 2010-4-20 20:20 编辑 ]

qsq123 发表于 2010-5-19 17:12

else
t=t/fs;
imagesc(t,,im,);
ylabel('frequency')

此处 t=t/fs; 将时间轴还原, 楼主说的问题通过这个应该就解决了。

xiangyu537 发表于 2010-5-19 21:21

想对IMF1和IMF2做Hilbert谱分析
程序如下感觉不对 求高人指点
imf = emd(ss);
emd_visu(ss,imf)
for j=1:2
=hhspectrum(imf(j,:));
end
axis()
=toimage(A,f);
disp_hhs(im,[],fs);
axis()
set(gca,'YDir','normal')
colormap(flipud(hot));

dzkt 发表于 2010-5-20 10:21

imf = emd(ss);
emd_visu(ss,imf)
for j=1:2
=hhspectrum(imf(j,:));
%axis()
=toimage(A,f);
disp_hhs(im,[],fs);
%axis()
%set(gca,'YDir','normal')
%colormap(flipud(hot));
end
页: [1] 2
查看完整版本: 请教关于disp_hhs作图的问题,急