请教:为什么用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分量的频率会出现突变,并且高于前两个分量的频率,这明显是错的,希望各位多多指教,是我对程序理解错误,还是我的程序有问题呢?谢谢了~ 都没有人理我吗?帮帮忙啊,谢谢各位了,小弟刚开始学习HHT啊~~ 模态混叠太厉害了建议用下eemd
http://rcada.ncu.edu.tw/ 可是,如果是单纯的模态混叠问题的话,为什么第三个IMF分量里会出现那么高的频率呢?原始信号中应该不会出现这么高的频率成分啊?
回复 楼主 lixiaoming_eric 的帖子
你好,我也是刚开始学习HHT,从本网站上下载的程序,我的emd怎末就不能显示分解的结果呢?一般用什么样的输出语句才能显示imf分量呢?imf = emd(x);imf = emd(x,'stop',,'maxiterations',100);不行吗?回复 5楼 aprilcat 的帖子
显示IMF分量是在分解完以后用emd_visu(x,t,imf,1);来显示分解结果的。回复 6楼 lixiaoming_eric 的帖子
问题解决了,非常感谢。不过说是没有instfreq这个函数,我不知道在哪里可以找到?也不知道怎末写这个程序呢?回复 7楼 aprilcat 的帖子
有的啊,如果是在论坛上下的程序,应该是有的。回复 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的定义是在这个函数的开始吗?应该定义成什么形式呢?
回复 9楼 aprilcat 的帖子
l只是函数的一个系数而已啊,当l=1时计算的是归一化频率,用的时候只要保持系统默认值就好了~ 回复 10 # lixiaoming_eric 的帖子请问一下emd里面用到的归一化频率是怎么定义的? 我也同问到底归一化频率是怎么回事呢? 高手指点归一化频率的含义
页:
[1]