声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

楼主: 泥尘如故

[HHT] 在求HHT时频谱和边际谱中toimage和meshgrid问题

  [复制链接]
发表于 2013-9-26 15:03 | 显示全部楼层
瞬时频率出现负值怎么处理?各位大侠跪求解答。
回复 支持 反对
分享到:

使用道具 举报

发表于 2013-12-4 16:42 | 显示全部楼层

我也遇到了这样的问题,有图出不来。请问前辈的问题解决了吗?怎么解决的?求指教
发表于 2014-6-22 11:50 | 显示全部楼层
好东西。。。。
发表于 2014-6-29 16:20 | 显示全部楼层
yghit08 发表于 2013-3-20 16:14
黄的PPT我没看过,你是说要蓝色背景的还是白色背景的?白色背景的不知道,蓝色背景的你去掉代码中控制 ...

我照你的程序去做,使用了你的disp_hht没问题,但是图的右边没有数值条,怎样改才能加一个?
发表于 2014-6-29 23:50 | 显示全部楼层
airazor 发表于 2014-6-29 16:20
我照你的程序去做,使用了你的disp_hht没问题,但是图的右边没有数值条,怎样改才能加一个?

这是Matlab的使用熟悉的问题,在出图后点击第一行那个五颜六色的小方块就好了
发表于 2014-9-1 17:17 | 显示全部楼层
能不能把完成的画边际谱的程序贴出来呀,谢谢啦!愁死了都,下载的程序运行之后提示错误“>> plot(f,bjp);
??? Error using ==> plot
Vectors must be the same lengths.”
一看,f和bjp的长度还真不一样!我怀疑是toimage的问题,但是又看不明白这个函数是干啥的,真纠结!
发表于 2014-9-4 10:08 | 显示全部楼层

您好,您看我下载的disp_hhs程序对吗:
%DISP_HHS  display 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,3,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,[0,0.5],im,[inf,0]);
  ylabel('normalized frequency')
else
  imagesc(t,[0,0.5*fs],im,[inf,0]);
  ylabel('frequency')
end
set(gca,'YDir','normal')
xlabel('time')
title('Hilbert-Huang spectrum')

谢谢啦!
发表于 2014-9-4 10:18 | 显示全部楼层
yghit08 发表于 2013-3-20 16:14
黄的PPT我没看过,你是说要蓝色背景的还是白色背景的?白色背景的不知道,蓝色背景的你去掉代码中控制 ...

这样对吗,disp_hhs的参数个数不一样,出来的图也不一样。。。可能是我的disp_hhs不对吧,我的disp_hhs函数是下面这样,
%DISP_HHS  display 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,3,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,[0,0.5],im,[inf,0]);
  ylabel('normalized frequency')
else
  imagesc(t,[0,0.5*fs],im,[inf,0]);
  ylabel('frequency')
end
set(gca,'YDir','normal')
xlabel('time')
title('Hilbert-Huang spectrum')
回复 支持 0 反对 1

使用道具 举报

发表于 2014-9-27 11:50 | 显示全部楼层
yghit08 发表于 2014-6-29 23:50
这是Matlab的使用熟悉的问题,在出图后点击第一行那个五颜六色的小方块就好了

谢谢你,我知道了,后面加一句colorbar就好了
发表于 2014-10-15 21:06 | 显示全部楼层
cwb 发表于 2014-9-1 17:17
能不能把完成的画边际谱的程序贴出来呀,谢谢啦!愁死了都,下载的程序运行之后提示错误“>> plot(f,bjp);
...

我也遇到这个问题 请问 您解决了吗 怎么解决的 望指教啊
发表于 2014-10-16 10:06 | 显示全部楼层
本帖最后由 cwb 于 2014-10-16 10:07 编辑
binglanyouyou 发表于 2014-10-15 21:06
我也遇到这个问题 请问 您解决了吗 怎么解决的 望指教啊

f的长度必须和bjp一样,你看下你f的长度是不是和bjp的长度不相等?估计长度是大1或者2,其实如果你只想看bjp的形状的话也可以不用f做横轴呀,直接plot(bjp);就ok了。
发表于 2014-10-16 11:35 | 显示全部楼层
cwb 发表于 2014-10-16 10:06
f的长度必须和bjp一样,你看下你f的长度是不是和bjp的长度不相等?估计长度是大1或者2,其实如果你只想看 ...

我在用仿真信号的时候,得出的f和bip长度是一样的,但是用实测信号就会遇到各种问题,出现长度不一样的问题,在用disp_hhs话hilbert谱的时候,出现out of mermory问题,楼上遇到过吗?
发表于 2014-10-16 15:16 | 显示全部楼层
binglanyouyou 发表于 2014-10-16 11:35
我在用仿真信号的时候,得出的f和bip长度是一样的,但是用实测信号就会遇到各种问题,出现长度不一样的问 ...

是的,也会出现out of memory的问题,而且还有点随机性,也就是并不是总是出这个错,而是有时候还是能画出来的。其实从调用toiamge的时候就会碰到这种问题,如果你采用默认的参数个数(toimage(A,f)的话就不会出错,但是这样调用输出的im矩阵的行数是默认的400行,可能不满足你的精度要求。
换一台内存大点的电脑试试吧,应该可以解决这个溢出的问题。
发表于 2014-10-18 17:12 | 显示全部楼层
cwb 发表于 2014-10-16 15:16
是的,也会出现out of memory的问题,而且还有点随机性,也就是并不是总是出这个错,而是有时候还是能画 ...

我的程序一直出现错误,用的是论坛贴出来的程序,能否把您的程序贴出来参考一下。
发表于 2014-10-19 05:06 | 显示全部楼层
谢谢分享!!











http://qxycqr.com/sitemap.html   http://www.ylmba.com/   http://3gxh.net/  

点评

反对: 5.0
反对: 5
广告垃圾  发表于 2014-10-20 10:58
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-5-18 14:28 , Processed in 0.103096 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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