|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
看到版上总是有人问EMD程序应用方面的问题,于是把 G.Rilling 写的 EMD.m注释汉化了,同时根据个人理解添加了部分注释,最后附上一个EMD分解+HHT谱+边际谱的例子。例子程序中所用到的函数是G.Rilling提供的,可以到如下地址下载:
http://perso.ens-lyon.fr/patrick.flandrin/emd.html
http://zhlong.ys168.com/
由于个人水平有限,权作抛砖引玉,希望对各位研究EMD的朋友有所帮助,也欢迎大家指正。
% 计算2FSK信号的HHT谱和边际谱
% 作者:xray 2007.11
clear
rand('seed', 0);
T = 0.05; % 仿真时间
R = 500; % 码速率
fd = 1000; % 载波频差
fc = 2000; % 载波频率
fs = 20000; % 采样率
samp = fs/R; % 每个码元上的采样点数
N = T*fs;
n = 1:N;
x = randint(1, R*T, 2);
y = fskmod(x, 2, fd, samp, fs);
y = y .* exp(i*2*pi*fc/fs*n);
y = real(y);
% z = awgn(y, 20, 'measured');
z = y;
imf = emd(z);
[A, fa, tt] = hhspectrum(imf);
if size(imf,1) > 1
[A,fa,tt] = hhspectrum(imf(1:end-1, :));
else
[A,fa,tt] = hhspectrum(imf);
end
[E, tt1] = toimage(A,fa,tt,length(tt));
for k = 1:size(E,1)
bjp(k) = sum(E(k,:))*1/fs*1/T;
end
f = (0:N-3)/N*(fs/2);
figure(1)
plot(z);
figure(2)
imagesc(tt1,[0,0.5*fs],E);
set(gca,'YDir','normal')
% 使用灰度图显示
% colormap(flipud(gray))
figure(3)
plot(f, bjp);
例子说明:
(1) 运行该实例还需要时频工具箱(tftb工具包)支持,可以到 http://zhlong.ys168.com/ 下载
(2) 由于该程序调用的m文件位于多个文件夹,因此最好将如下路径
*\emd\emds
*\emd\utils
*\tftb-0.1\mfiles
添加到matlab的路径中(File\Set Path)
(3) 2FSK是通信中常用的数字调制方式,分别用两个频率的正弦波表示“1”和“0”,例子中这两个频率分别为1500Hz和2500Hz。图1是2FSK信号的时域波形,可以看到振动波形有疏有密。对照图2可以发现,疏密部分对应了信号中的低频部分(1500Hz)和高频部分(2500Hz),HHT谱恰好实现了2FSK信号的解调,这也是这个应用的物理意义。图3反映了信号在两个频率上的能量分布,表示了信号中“1”和“0”中出现的比例。
[ 本帖最后由 zhangnan3509 于 2007-11-28 11:10 编辑 ] |
-
-
emd.m
22.86 KB, 下载次数: 1501
评分
-
1
查看全部评分
-
|