MF_emd_data=emd(x); %IMF_emd_data为信号EMD分解后的各阶IMF分量
%IMF分量重构
f_down=f1;f_up=f2; %f1、f2分别为所选的频率上下限
f_down_q=floor(f_down/fs*N);f_up_q=ceil(f_up/fs*N); %fs为信号采样频率,N为fft点数
for i=1:size(IMF_emd_data,1)-1
F_a=fft(IMF_emd_data(i,:),N);E=abs(F_a.*conj(F_a))/N;
E_f=E(f_down_q:f_up_q);
IMF_f_percentage(i)=100*sum(E_b)/sum(E);
end
f_n=[];
n=0;
threshold_f=0.36; %threshold_f为阈值
for i=1:size(IMF_emd_data,1)-1
if IMF_f_percentage(i)>threshold_f*100
f_n(n+1)=i;
n=n+1;
end
end
IMF_reconstruct=zeros(1,length(IMF_emd_data)); %重构后的目标信号
for i=1:n
IMF_reconstruct=IMF_reconstruct+IMF_emd_data(f_n(i),:);
end
对经验模态分解后的各分量IMF进行重构代码,函数可直接调用。
评论5