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附近有波动的线不太明白请指点啊!! 图片如下: 将式% 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 编辑 ]
回复 板凳 wains 的帖子
谢谢您的指点!我按习惯说的“采样间隔”dt,是隔多久一个数据,即上例中的0.25s,采样周期直接是dt,我以为对应的采样周期是2*dt了; 因为折叠频率是1/(2*dt), 所以乘以2了,搞混了。
谢谢!那么信号处理中(以及matlab)做fft,wavelet都是这么理解:采样间隔=采样周期,对吧?
回复 地板 bibi951 的帖子
嗯,这是最基本的概念采样周期是采样频率的倒数,是采样之间的时间间隔,即采样间隔。
页:
[1]