3是fs/N=1/11的33倍,所以是整数倍。
再举例如下:
一、N/fs 为整数,但是有波动
fs=100;N=600;n=0:1:N-1;dt=1/fs;t=n*dt;
x=cos(2*pi*3.3*t);x=hilbert(x');[fnor,t]=instfreq(x);
plot(t,fnor*fs);
N/fs为整数,但3.3/(fs/N)=3.3/(100/600)=19.8 不是整数,这个时候出现波动。
显然不满足楼主下面这个猜想。
二、N/fs不为整数,却没有波动
fs=100;N=1025;n=0:1:N-1;dt=1/fs;t=n*dt;
x=cos(2*pi*4*t);x=hilbert(x');[fnor,t]=instfreq(x);
plot(t,fnor*fs)
N/fs不为整数,但它的瞬时频率线却近似为直线,所以这又是楼主假设的一个反例。这里4/(fs/N)=4/(100/1025)=41是整数,满足整周期采样。
所以可以得出结论:基于信号hilbert变换和函数instfreq求取信号瞬时频率时为了避免波动,必须对信号进行整周期采样。由于HHT也是基于这一方法求信号瞬时频率,由此可知在利用EMD、HHT画信号时频图时,其中时频线的波动一部分可能是由于没有对信号进行整周期采样造成的。
三、验证非整周期采样对HHT时频图的影响
1、整周期采样
t=[0.001:0.001:1];
x=sin(2*pi*200*t);
y=sin(2*pi*80*t);
imf=[x;y];%直接把x、y当作emd分解结果
[A,f,tt]=hhspectrum(imf);
[im,tt]=toimage(A,f);
disp_hhs(im)
colormap(flipud(gray))
title('整周期采样时的HHT时频图')
fs=1000,N=1000,所以x和y都是整周期采样,得出hht时频图如下,两条时频线都是比较好的直线。
2、非整周期采样
令x=sin(2*pi*200.5*t); 此时x不是整周期采样。得出HHT时频图如下:
可以看出归一化频率0.2处的时频线两端有微小波动,将局部放大如下图:
由上可知:非整周期采样确实会造成HHT时频图时频线两端的波动,不过这种波动相对于采样频率较小,所以在频率轴显示范围为[0 , fs/2]的HHT时频图上,由非整周期采样造成的波动视觉上还是较小的。
四、待解决问题
非整周期采样在FFT分析中造成的泄漏容易理解,非整周期采样是如何造成瞬时频率曲线的波动的?理论上如何解释?
[ 本帖最后由 zhlong 于 2007-8-21 20:01 编辑 ] |