请教一个时频画图问题
用contour命令跟imagesc命令画出的图形,请帮忙看下,为什么imagesc命令画出的图形是错的啊!谢谢!!回复 #1 xiw 的帖子
我改用pcolor命令后画出的图形是一片黑的,请问这是什么原因呢?用contour可以画的应该是用pcolor也可以画吧?? 我也有同样的困扰啊,我在用HHT检测语音基音,要画Hibert振幅谱,不会啊,请问谁知道啊,请教了:'( :@L 谁知道啊,我用下载的那个toimage也不行啊,晕死了。eight能不能解答一下啊:'(回复 #3 linqin1201 的帖子
好好搜索一下论坛的帖子,对你会有帮助的 谁知道啊,我用下载的那个toimage也不行啊,晕死了。eight能不能解答一下啊 论坛上没有啊,zhangnan3509你可懂啊,可以交流一下吗? 我的qq是:33538955:@)回复 #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)';
回复 #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
回复 #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') 也就这几个做HHT谱的程序,你自己调试一下 :@( 就是附件这个图是咋画的啊?:@L 横轴是时间,纵轴是频率
回复 #13 linqin1201 的帖子
什么意思呀 我不明白,这是时频图,和HHT谱图不一样啊[ 本帖最后由 zhangnan3509 于 2007-4-18 22:50 编辑 ] 原帖由 zhangnan3509 于 2007-4-18 22:45 发表
什么意思呀 我不明白,这是时频图,和HHT谱图不一样啊
HHT谱图也是时频图的一种啊,不过我对此没有太多研究,继续回到我的论文,呵呵
页:
[1]
2