lixiaoming_eric 发表于 2009-9-2 22:23

请教:为什么用instfreq.m计算出的瞬时频率会出现突变?

首先谢谢各位的关注和帮助。我所用的程序就是从论坛下载的HHT的程序,为了看下瞬时频率的效果,用instfreq.m函数对程序中给出的示例信号进行了计算,程序如下,其中前半部分就是emd_fmsin.m中生成示例信号的程序:

N = 2000;% # of data samples
T = 1:4:N;
t = 1:N;
p = N/2;% period of the 2 sinusoidal FM's

% sinusoidal FM 1
fmin1 = 1/64;% min frequency
fmax1 = 1.5*1/8;% max frequency
x1 = fmsin(N,fmin1,fmax1,p,N/2,fmax1);

% sinusoidal FM 1
fmin2 = 1/32;% min frequency
fmax2 = 1.5*1/4;% max frequency
x2 = fmsin(N,fmin2,fmax2,p,N/2,fmax2);

% logon
f0 = 1.5*1/16;% center frequency
x3 = amgauss(N,N/2,N/8).*fmconst(N,f0);
a1 = 1;
a2 = 1;
a3 = 1;
x = real(a1*x1+a2*x2+a3*x3);
x = x/max(abs(x));

= emd(x,t);
emd_visu(x,t,imf,1);

%求解瞬时频率
for i=1:(size(imf,1)-1)
    an(i,:)=hilbert(imf(i,:)')';
    f(i,:)=instfreq(an(i,:)')';
    A=abs(an(:,2:end-1));
end
      
figure(2)
plot(f(1,:),'r')
hold on;
plot(f(2,:),'g')
hold on;
plot(f(3,:),'k')
hold off;

程序运行后的结果如下,问题是,为什么第三个IMF分量的频率会出现突变,并且高于前两个分量的频率,这明显是错的,希望各位多多指教,是我对程序理解错误,还是我的程序有问题呢?谢谢了~

lixiaoming_eric 发表于 2009-9-3 12:08

都没有人理我吗?帮帮忙啊,谢谢各位了,小弟刚开始学习HHT啊~~

wangzhe1987 发表于 2009-9-3 17:18

模态混叠太厉害了建议用下eemd
http://rcada.ncu.edu.tw/

lixiaoming_eric 发表于 2009-9-5 14:32

可是,如果是单纯的模态混叠问题的话,为什么第三个IMF分量里会出现那么高的频率呢?原始信号中应该不会出现这么高的频率成分啊?

aprilcat 发表于 2009-9-8 10:29

回复 楼主 lixiaoming_eric 的帖子

你好,我也是刚开始学习HHT,从本网站上下载的程序,我的emd怎末就不能显示分解的结果呢?一般用什么样的输出语句才能显示imf分量呢?imf = emd(x);imf = emd(x,'stop',,'maxiterations',100);不行吗?

lixiaoming_eric 发表于 2009-9-9 10:17

回复 5楼 aprilcat 的帖子

显示IMF分量是在分解完以后用emd_visu(x,t,imf,1);来显示分解结果的。

aprilcat 发表于 2009-9-10 11:34

回复 6楼 lixiaoming_eric 的帖子

问题解决了,非常感谢。不过说是没有instfreq这个函数,我不知道在哪里可以找到?也不知道怎末写这个程序呢?

lixiaoming_eric 发表于 2009-9-14 15:43

回复 7楼 aprilcat 的帖子

有的啊,如果是在论坛上下的程序,应该是有的。

aprilcat 发表于 2009-9-15 11:11

回复 8楼 lixiaoming_eric 的帖子

找是找到了,就是不能运行。
?? Input argument "L" is undefined.

Error in ==> instfreq at 46
if L<1,

Error in ==> hhspectrum at 45
f(i,:)=instfreq(an(i,:)',tt,l)';

Error in ==> Untitled at 18
=hhspectrum(imf);   没明白是怎末回事。L的定义是在这个函数的开始吗?应该定义成什么形式呢?

lixiaoming_eric 发表于 2009-9-15 13:37

回复 9楼 aprilcat 的帖子

l只是函数的一个系数而已啊,当l=1时计算的是归一化频率,用的时候只要保持系统默认值就好了~

sunny47212 发表于 2011-7-14 08:57

回复 10 # lixiaoming_eric 的帖子

请问一下emd里面用到的归一化频率是怎么定义的?

hurui1117 发表于 2011-7-23 20:32

我也同问到底归一化频率是怎么回事呢?

南宫轩宇 发表于 2011-8-16 19:33

高手指点归一化频率的含义
页: [1]
查看完整版本: 请教:为什么用instfreq.m计算出的瞬时频率会出现突变?