JulianChin 发表于 2007-12-1 13:01

HHT反变换与瞬时频率的频移

function = invhht
clear;

f1=100;
f2=5000;
ts=1/20000;
fs=1/ts;
k=0.4;
t=0:ts:k;

y=sin(2*pi*t*f1)+t*4;

= emd(y);

=size(imf);
figure(1)

= hhspectrum(imf);

plot(fa,abs(A))

th=2*pi*fa.*tt; %求瞬时相位

yy=real(A.*exp(sqrt(-1)*th)); %重构原信号


figure(2)
plot(tt,yy)

figure(21)
    = abs(fftshift(fft(yy,length(tt))));
    = abs(fftshift(fft(xx,length(t))));
    plot(ff1)
figure(22)
    plot(ff2)

JulianChin 发表于 2007-12-1 13:05

结果是

[ 本帖最后由 JulianChin 于 2007-12-1 13:07 编辑 ]

JulianChin 发表于 2007-12-1 13:10

注意:
瞬时频率—瞬时幅度谱并不是一条理想垂线,这说明瞬时频率变换有频移!!
因此HHT反变换的实用性还有待研究

我不是搞算法的,编程水平不高,我这种计算HHT反变换方法很原始,我希望论坛上那位前辈能做出精度更好的程序给大家分享

JulianChin 发表于 2007-12-1 17:02

对于那些瞬时谱成混沌形态的信号,好像没法重构,因为不知道瞬时谱对于时间的函数,也没法拟合

playfish 发表于 2007-12-3 15:25

HHT本质上来说是没法反变换的。因为从imf到瞬时频率有一步微分,即瞬时相位微分成为瞬时频率。如果反变换,就要对瞬时频率积分,此时会产生一个常数项,这个常数项是不确定的。因此也就造成你的途中趋势项的缺失。你的程序中求瞬时相位的那一步其实是默认常数项为零。因此,HHT反变换是没法绕过常数项问题的。这是算法本质决定的。

JulianChin 发表于 2007-12-3 17:58

回复 #5 playfish 的帖子

我想你是对的

xuxinnuaa 发表于 2007-12-4 09:42

趋势项的问题,在hht中,在我有限的水平看来,确实是还没有更好的办法解决。

asdf229955 发表于 2008-3-20 14:50

playfish说的有道理,这问题目前还不好解决
页: [1]
查看完整版本: HHT反变换与瞬时频率的频移