bibi951 发表于 2009-5-26 16:44

hht谱 得到的频率-时间图 和信号不符

新人   想用用这个emd方法   直接下载的GRilling的程序使用 copy了论坛前辈的例子自己加了注释   写了一个简单例子试试
是正弦 余弦曲线的叠加设采样间隔是0.25s   

t=0:0.25:50;
y=sin(2*t)+3*cos(4*t);
z=y';
imf=emd(z);                        % 求各IMF
emd_visu(z,1:length(z),imf)      % 画各IMF时间序列 和fine2course ,course2fine 的信号重建(3 figures)

=hhspectrum(imf);          % 对每一IMF求局部振幅和局部频率

=toimage(A,f);            % 求Hilbert-Huang谱(转换成image)

T=0.25*2;            % 采样周期-采样间隔0.25s   
fs=2*pi/T;         % 对应的采样频率(角频率)
disp_hhs(im,[],fs);                % 画谱图
colormap(flipud(gray))

按说得到的谱图上应该在角频率为2和4处各有一条线   但是现在时在1和2附近有波动的线不太明白请指点啊!!

bibi951 发表于 2009-5-27 09:45

图片如下:

wains 发表于 2009-5-27 20:19

将式% T=0.25*2中的*2去掉即可。
因为fs=2*pi/T;这句话是为了将频率转化为角频率,从楼主给的式t=0:0.25:50中
可以看出采样频率,1/fs=0.25,即fs=1/0.25;
而与楼主用以下两句所得的采样频率不一致:
% T=0.25*2;            % 采样周期-采样间隔0.25s   
% fs=2*pi/T;         % 对应的采样频率(角频率)
效果见附图:从谱图上看,角频率2和4处各有一条线且比较明显。

为了方便理解,我把楼主的程序编辑修改了一下:
clc;clear all;
fs=4;
dt=1/fs;
N=200;
n=0:N-1;
t=n*dt;%以上语句与式t=0:0.25:50等效;
y=sin(2*t)+3*cos(4*t);
z=y';
imf=emd(z);                        % 求各IMF
emd_visu(z,1:length(z),imf)      % 画各IMF时间序列 和fine2course ,course2fine 的信号重建(3 figures)
=hhspectrum(imf);          % 对每一IMF求局部振幅和局部频率
=toimage(A,f);            % 求Hilbert-Huang谱(转换成image)
w=2*pi*fs;% 对应的采样频率(角频率)
disp_hhs(im,[],w);                % 画谱图
colormap(flipud(gray))

[ 本帖最后由 wains 于 2009-5-27 20:21 编辑 ]

bibi951 发表于 2009-5-28 10:30

回复 板凳 wains 的帖子

谢谢您的指点!
我按习惯说的“采样间隔”dt,是隔多久一个数据,即上例中的0.25s,采样周期直接是dt,我以为对应的采样周期是2*dt了; 因为折叠频率是1/(2*dt), 所以乘以2了,搞混了。

谢谢!那么信号处理中(以及matlab)做fft,wavelet都是这么理解:采样间隔=采样周期,对吧?

wains 发表于 2009-5-28 14:41

回复 地板 bibi951 的帖子

嗯,这是最基本的概念
采样周期是采样频率的倒数,是采样之间的时间间隔,即采样间隔。
页: [1]
查看完整版本: hht谱 得到的频率-时间图 和信号不符