xiw 发表于 2007-4-17 10:25

请教一个时频画图问题

用contour命令跟imagesc命令画出的图形,请帮忙看下,为什么imagesc命令画出的图形是错的啊!谢谢!!

xiw 发表于 2007-4-17 15:38

回复 #1 xiw 的帖子

我改用pcolor命令后画出的图形是一片黑的,请问这是什么原因呢?用contour可以画的应该是用pcolor也可以画吧??

linqin1201 发表于 2007-4-18 22:03

我也有同样的困扰啊,我在用HHT检测语音基音,要画Hibert振幅谱,不会啊,请问谁知道啊,请教了:'( :@L

linqin1201 发表于 2007-4-18 22:07

谁知道啊,我用下载的那个toimage也不行啊,晕死了。eight能不能解答一下啊:'(

zhangnan3509 发表于 2007-4-18 22:07

回复 #3 linqin1201 的帖子

好好搜索一下论坛的帖子,对你会有帮助的

linqin1201 发表于 2007-4-18 22:12

谁知道啊,我用下载的那个toimage也不行啊,晕死了。eight能不能解答一下啊

linqin1201 发表于 2007-4-18 22:18

论坛上没有啊,zhangnan3509你可懂啊,可以交流一下吗? 我的qq是:33538955:@)

zhangnan3509 发表于 2007-4-18 22:24

回复 #7 linqin1201 的帖子

function = toimage(A,f,t,splx,sply)

% = TOIMAGE(A,f,t,splx,sply) transforms a spectrum made
% of 1D functions (e.g., output of "spectreh") in an 2D image
%
% inputs :   - A    : amplitudes of modes (1 mode per row of A)
%            - f    : instantaneous frequencies
%            - t    : time instants
%            - splx : number of columns of the output im (time resolution).
%                     If different from length(t), works only for uniform
%                     sampling.
%            - sply : number of rows of the output im (frequency resolution).
% outputs :- im   : 2D image of the spectrum
%            - tt   : time instants in the image
%
% utilisation : = toimage(A,f); = toimage(A,f,t); = toimage(A,f,sply);
%             = toimage(A,f,splx,sply); = toimage(A,f,t,splx,sply);

DEFSPL = 400;

if nargin < 3
t = 1:size(A,2);
sply = DEFSPL;
splx = length(t);
else
    if length(t) == 1
      tp = t;
      t = 1:size(A,2);
      if nargin < 4
            sply = tp;
            splx = length(t);
      else
            if nargin > 4
                error('too many arguments')
            end
            sply = splx;
            splx = tp;
      end
    else
      lt = length(t);
      if nargin < 5
          sply = splx;
          splx = lt;
      end

      if nargin < 4
          sply = DEFSPL;
          splx = lt;
      end
      
      if nargin > 5
            error('too many arguments')
      end
    end
end
   
lt=length(t);

im=[];
im(splx,sply) = 0;

for i=1:size(f,1)
for j = 1:lt
    ff=floor(f(i,j)*2*(sply-1))+1;
    if ff <= sply % in case f(i,j) > 0.5
      im(floor(j*(splx-1)/lt)+1,ff)=im(floor(j*(splx-1)/lt)+1,ff)+A(i,j);
    end
end
end

for i = 1:splx
tt(i) = mean(t(floor((i-1)*lt/(splx))+1:floor(i*lt/(splx))));
end

im=fliplr(im)';

zhangnan3509 发表于 2007-4-18 22:24

回复 #7 linqin1201 的帖子

function = hhspectrum(imf,t,l,aff)

% = HHSPECTRUM(imf,t,l,aff) computes the Hilbert-Huang spectrum
%
% inputs:
%         - imf : matrix with one IMF per row
%   - t   : time instants
%   - l   : estimation parameter for instfreq
%   - aff : if 1, displays the computation evolution
%
% outputs:
%   - A   : amplitudes of IMF rows
%   - f   : instantaneous frequencies
%   - tt: truncated time instants
%
% calls:
%   - hilbert: computes the analytic signal
%   - instfreq : computes the instantaneous frequency

if nargin < 2

t=1:size(imf,2);

end

if nargin < 3

l=1;

end

if nargin < 4

aff = 0;

end

lt=length(t);

tt=t((l+1):(lt-l));

for i=1:(size(imf,1)-1)

an(i,:)=hilbert(imf(i,:)')';
f(i,:)=instfreq(an(i,:)',tt,l)';
A=abs(an(:,l+1:end-l));

if aff

    disp(['mode ',int2str(i),' trait?'])

end

end

zhangnan3509 发表于 2007-4-18 22:25

回复 #7 linqin1201 的帖子

function disp_hhs(im,t,inf)

% DISP_HHS(im,t,inf)
% displays in a new figure the spectrum contained in matrix "im"
% (amplitudes in log).
%
% 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
%
% utilisation : disp_hhs(im) ; disp_hhs(im,t) ; disp_hhs(im,inf)
%            disp_hhs(im,t,inf)

figure
colormap(bone)
colormap(1-colormap);

if nargin==1
inf=-20;
t = 1:size(im,2);

end

if nargin == 2
if length(t) == 1
    inf = t;
    t = 1:size(im,2);
else
    inf = -20;
end
end

if inf >= 0
error('inf doit etre < 0')
end

M=max(max(im));

im = log10(im/M+1e-300);

inf=inf/10;


imagesc(t,fliplr((1:size(im,1))/(2*size(im,1))),im,);
set(gca,'YDir','normal')
xlabel(['time'])
ylabel(['normalized frequency'])
title('Hilbert-Huang spectrum')

zhangnan3509 发表于 2007-4-18 22:26

也就这几个做HHT谱的程序,你自己调试一下

linqin1201 发表于 2007-4-18 22:41

:@(   就是附件这个图是咋画的啊?:@L

linqin1201 发表于 2007-4-18 22:44

横轴是时间,纵轴是频率

zhangnan3509 发表于 2007-4-18 22:45

回复 #13 linqin1201 的帖子

什么意思呀 我不明白,这是时频图,和HHT谱图不一样啊

[ 本帖最后由 zhangnan3509 于 2007-4-18 22:50 编辑 ]

eight 发表于 2007-4-18 23:38

原帖由 zhangnan3509 于 2007-4-18 22:45 发表
什么意思呀 我不明白,这是时频图,和HHT谱图不一样啊


HHT谱图也是时频图的一种啊,不过我对此没有太多研究,继续回到我的论文,呵呵
页: [1] 2
查看完整版本: 请教一个时频画图问题