admin 管理员组文章数量: 1184232
2024年3月6日发(作者:bootstarp教程)
7、边际谱和HHT谱的Matlab例子
看到版上总有人在问边际谱和HHT谱的画法,又搜索了一下,好像没有这方面的主题帖子,就发两个以前写的小程序,权作抛砖引玉吧。
% 边际谱与FFT比较
clear
T = 1; % 仿真时间
f1 = 15.2;
f2 = 40;
fs = 1000; % 采样率
N = T*fs;
n = 1:N;
s = sin(2*pi*f1/fs*n) + sin(2*pi*f2/fs*n);
s_fft = abs(fft(s))/N;
imf = emd(s);
[A, fa, tt] = hhspectrum(imf);
[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(f,bjp);
xlabel('频率 / Hz');
ylabel('幅值');
figure(2);
plot(0:fs/N:fs/2-fs/N, s_fft(1:end/2))
1 / 6
% 实际信号的HHT谱和边际谱
clear
rand('seed', 0);
T = 0.01; % 仿真时间
R = 5000; % 码速率
fd = 10000; % 载波频差
fc = 20000; % 载波频率
fs = 200000; % 采样率
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));
disp_hhs(E, tt1);
% 使用灰度图显示
% colormap(gray(255))
for k = 1:size(E,1)
bjp(k) = sum(E(k,:))*1/fs*1/T;
end
f = (0:N-3)/N*(fs/2);
2 / 6
figure(2);
plot(f, bjp);
答:我用g的程序对自己的信号分析了下,感觉做出的hht谱有些奇怪,好像不对,那跟我的原始信号很相似,上传麻烦您给看下。后面又用你给的程序做出了边际谱,也不知道对不对,也上传给你看下,感觉我的边际谱很乱。我的数据也在附件里附上了。另外最后一张图,是我之前用plot_hht的程序做出的时频图也上传过来看下。
hht谱图
边际谱
3 / 6
plot_hht程序做的时频图
8、关于hilbert谱图的问题
4 / 6
请教:为什么我画的Hilbert谱的二维图颜色条显示都是负数呢?之前用另外一个程序画的图也是这样的.程序在附件中给出
答:原因很簡單啊…
help disp_hhs就知道答案了…
因為圖中的數值皆除以最大值,而後取dB值
數值變小,當然dB值會是負值。
内容总结
(1)7、边际谱和HHT谱的Matlab例子
看到版上总有人在问边际谱和HHT谱的画法,又搜索了一下,好像没有这方面的主题帖子,就发两个以前写的小程序,权作抛砖引玉吧
5 / 6
(2)7、边际谱和HHT谱的Matlab例子
看到版上总有人在问边际谱和HHT谱的画法,又搜索了一下,好像没有这方面的主题帖子,就发两个以前写的小程序,权作抛砖引玉吧
(3)ylabel('幅值')
(4)help disp_hhs就知道答案了
6 / 6
版权声明:本文标题:边际谱和HHT谱的Matlab例子 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/p/1709736836a544882.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论