資源簡介
基于MATLAB個人編寫的EMD分解及信號重構例子,顯示hilbert譜分析圖像、各級分解結果,并顯示重構誤差。
代碼片段和文件信息
clear;
clc;
close?all;
fs=2048;
T=1/fs;
L=2048;
t=(0:L-1)*T;
f1=20;
f2=50;
f3=100;
z=sin(2*pi*f1*t)+sin(2*pi*f2*t)+sin(2*pi*f3*t);
figure()
plot(z‘b‘)
xlabel(‘采樣點數‘)
ylabel(‘幅值‘)
?
imf?=?emd(z);???????
emd_visu(z1:length(z)imf);%調用EMD工具箱中的emd_visu函數運行結果如下
s=0;
for?k=1:length(imf(:1))
????s=s+imf(k:);
end
es=z-s;
figure()
plot(es)
xlabel(‘采樣點數‘)
ylabel(‘重構誤差‘)
[Aftt]?=?hhspectrum(imf);?
[Ett1]?=?toimage(Afttlength(tt));
figure
imagesc(tt1/fs[00.5*fs]E);???
set(gca‘YDir‘‘normal‘)
xlabel(‘time‘)
ylabel(‘frequency(Hz)‘)
colorbar
title(‘Hilbert-Huang?spectrum‘)
for?k=1:size(E1)
bjp(k)=sum(E(k:))*1/fs;?
end
f=(1:L-2)/L*(fs/2);
figure()
plot(fbjp);
xlabel(‘頻率?/?Hz‘);
ylabel(‘信號幅值‘);
title(‘信號邊際譜‘)%要求邊際譜必須先對信號進行EMD分解
評論
共有 條評論