6_emd fft hht 经验模态分解 快速傅里叶变换 希尔伯特黄变换 希尔伯特谱 matlab2018a及以上运行 matlab实现对信号做emd分解,对分解得到的imf分量做fft及ht 主要操作有; 1.对输入信号做emd分解得到的10个imf分量分别做fft与ht并展示 2.选择所有的imf分量和单独的imf分量做ht后三维可视化 3.选择一部分imf分量重构信号,并展示重构信号的时域图像及fft变换后的频域图像 代码有详细介绍并附带注释,保证可运行 附带一份数据,可以查看数据格式来调整你的数据最后使用代码运行你的数据 建议先运行附带数据搞懂代码如何使用再替换你的数据

打开Matlab时总感觉信号处理工具箱在发烫?今天带大家玩点实在的——用EMD把信号大卸八块,再让FFT和HHT轮番上阵。老规矩,先上效果:当振动信号的时频谱在你眼前展开时,你会听见CPU风扇在尖叫。(代码要求Matlab2018a以上,别拿祖传版本来试)

先搞个刺激的仿真信号热热身:

fs = 1000; % 采样率要够劲
t = 0:1/fs:3; 
x = 2*sin(2*pi*15*t) + 0.5*cos(2*pi*80*t) + randn(size(t)); % 15Hz主频+80Hz调制+噪声

上硬菜——EMD分解,这玩意比切牛排还讲究:

[imf, residual] = emd(x, 'Interpolation', 'pchip', 'Display', 1); % 用pchip插值更稳
figure;
for k=1:size(imf,2)
    subplot(size(imf,2),1,k);
    plot(t, imf(:,k)); % 每个IMF单独展示
end

运行完你会看到信号被拆成从高频到低频的层层波动,注意第一个IMF通常是暴躁的噪声层。

给每个IMF做个FFT体检:

f = (0:length(x)-1)*fs/length(x); % 频率轴
for i=1:size(imf,2)
    FFT_amp = abs(fft(imf(:,i)));
    figure;
    plot(f(1:200), FFT_amp(1:200)); % 重点看0-200Hz
    title(['IMF',num2str(i),'频谱']);
end

这时候80Hz的成分会老实出现在高频IMF里,而15Hz主频可能被拆分到中低频IMF,FFT结果比相亲对象还诚实。

6_emd fft hht 经验模态分解 快速傅里叶变换 希尔伯特黄变换 希尔伯特谱 matlab2018a及以上运行 matlab实现对信号做emd分解,对分解得到的imf分量做fft及ht 主要操作有; 1.对输入信号做emd分解得到的10个imf分量分别做fft与ht并展示 2.选择所有的imf分量和单独的imf分量做ht后三维可视化 3.选择一部分imf分量重构信号,并展示重构信号的时域图像及fft变换后的频域图像 代码有详细介绍并附带注释,保证可运行 附带一份数据,可以查看数据格式来调整你的数据最后使用代码运行你的数据 建议先运行附带数据搞懂代码如何使用再替换你的数据

轮到Hilbert黄变换秀操作,三维时频谱才是真男人:

[hs, f, t] = hht(imf, fs, 'FrequencyResolution', 0.5); % 频率精度0.5Hz
figure;
surf(t, f, abs(hs), 'EdgeColor', 'none');
view(2);
shading interp;
colorbar;
xlabel('时间(s)');
ylabel('频率(Hz)');

这个时频谱能清晰看到15Hz持续存在,而80Hz像打游击一样时隐时现,噪声则像满天星散落在高频区。

重构信号就像拼乐高,选IMF要带脑子:

recon = sum(imf(:,2:4), 2); % 假设我们选中2-4号IMF
figure;
subplot(211);
plot(t, x, 'b', t, recon, 'r--'); % 原始vs重构
legend('原始信号','重构信号');

subplot(212);
plot(f(1:200), abs(fft(x))(1:200), 'b',...
     f(1:200), abs(fft(recon))(1:200), 'r--'); % 频谱对比

这时候会发现重构信号去除了高频噪声和低频趋势项,关键频率成分毫发无损,就像给信号做了个精准去角质。

最后说数据格式——你的数据必须是单列时间序列,采样率自己心里有数。曾经有个兄弟拿了Excel转置失败的数据来跑,结果频谱图旋转了90度...祝你好运!

(代码包内含实测的轴承振动数据,拿它练手时记得关掉音响——某些高频共振分量会让扬声器发出诡异啸叫)

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐