声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2610|回复: 20

[HHT] 请教HHT运行问题

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

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

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

x
我在运行程序时出现下面的提示信息,频谱图能够显示出来,(附件中是显示出的频谱图)但跟跟实际的好像不相符,刚接触这方面内容麻烦高手帮忙解释一下

??? Error using ==> instfreq
T can not be equal to 1 neither to the last element of X
Error in ==> hhspectrum at 45
  f(i,:)=instfreq(an(i,:)',tt,l)';
Error in ==> Untitled at 17
[A,f,tt]=hhspectrum(imf);
源程序如下:
fs=2000;%采样频率
N=600;%采样点数
t=0:1/fs:(N-1)*1/fs

x1=sin(2*pi*30*t);
x2=0.4*sin(2*pi*65*t+140);
x=x1+x2;
plot(t,x)[local]1[/local]
imf=emd(x);
emd_visu(x,1:length(x),imf,1)
[A,f,tt]=hhspectrum(imf);
[im,tt]=toimage(A,f);
disp_hhs(im);
colormap(flipud(gray))

hht.fig

22.94 KB, 下载次数: 25

回复
分享到:

使用道具 举报

发表于 2008-3-20 12:03 | 显示全部楼层
emd_visu(x,1:length(x),imf,1)
这行为什么要加1?去掉可以吗
 楼主| 发表于 2008-3-20 14:25 | 显示全部楼层
function [f2c,c2f] = emd_visu(x,t,imf,i);

if(nargin==4)
  figure(i)
else
  figure
end

其中i是figure的序列号为可选项,不要也可以
 楼主| 发表于 2008-3-21 09:55 | 显示全部楼层
未命名.jpg
 楼主| 发表于 2008-3-21 09:59 | 显示全部楼层
上图是运行出来的结果,不知道究竟哪里出错了
发表于 2008-3-21 11:04 | 显示全部楼层
是不是EMD分解图也没有把这两个信号分开?
 楼主| 发表于 2008-3-21 11:18 | 显示全部楼层
01.jpg


这是EMD分解图,这两个信号倒是能分解出来
发表于 2008-3-21 12:13 | 显示全部楼层

回复 7楼 的帖子

那就不该是分解的问题了。低频信号在时频图上没看出来
 楼主| 发表于 2008-3-21 12:31 | 显示全部楼层
??? Error using ==> instfreq
T can not be equal to 1 neither to the last element of X
Error in ==> hhspectrum at 45
  f(i,:)=instfreq(an(i,:)',tt,l)';
Error in ==> Untitled at 17
[A,f,tt]=hhspectrum(imf);
还有上面这个错误提示,我也不知道怎么回事。下面是hhspectrum的内容,instfreq程序是在网上下的,应该没问题
%inputs:
%         - imf : matrix with one IMF per row
%   - t   : time instants
%   - l   : estimation parameter for instfreq
%   - aff : if 1, displays the computation evolution
function [A,f,tt] = hhspectrum(imf,t,l,aff)
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));%%%%%
  [im,tt] = toimage(A,f(i,:));
disp_hhs(im,t,-20);

  if aff

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

  end

end
 楼主| 发表于 2008-3-21 12:33 | 显示全部楼层
顺便问一下,正常情况下这个频谱图应该是什么样的
发表于 2008-3-21 12:37 | 显示全部楼层
应该在对应的频率上,是两条线。不一定很直,但是能反应出在这个频率上有信号成分。我做出的结果是这样的

[ 本帖最后由 zhangnan3509 于 2008-3-21 12:50 编辑 ]
2.gif
 楼主| 发表于 2008-3-21 12:41 | 显示全部楼层
那低频是35,归一化频率大约是0.0175,会不会是因为与0轴太接近了,所以显示不出来
发表于 2008-3-21 12:51 | 显示全部楼层

回复 12楼 的帖子

你看看上面的图
 楼主| 发表于 2008-3-21 15:45 | 显示全部楼层
那到底是我hhspectrum()这个程序出现错误了还是instfreq有异常呢
发表于 2008-3-21 15:49 | 显示全部楼层

回复 14楼 的帖子

我按照你的程序作的,除了把plot(t,x)[local]1[/local]变成把plot(t,x),之后就是在disp_hht中纵坐标乘采样频率。除此之外,没有任何变化。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-11-25 10:04 , Processed in 0.097934 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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