资源简介
对于正在开始研究EMD进行信号处理的朋友有帮助,里面有EMD的源码,可以直接在MATLAB实验。
代码片段和文件信息
%EMD
function [imfortnbits] = emd(varargin)
[xtsdsd2tolMODE_COMPLEXndirsdisplay_siftingsdtsd2trimfknbitNbItMAXITERATIONSFIXEFIXE_HMAXMODESINTERPmask] = init(varargin{:});
if display_sifting
fig_h = figure;
end
%主循环 : 要求至少有3个极值
while (~stop_EMD(rMODE_COMPLEXndirs) && (k < MAXMODES+1 || MAXMODES == 0) && ~any(mask))
% 当前模态
m = r;
% 先前的迭代模态
mp = m;
%均值的计算和终止准则
if FIXE
[stop_siftmoyenne] = stop_sifting_fixe(tmINTERPMODE_COMPLEXndirs);
elseif FIXE_H
stop_count = 0;
[stop_siftmoyenne] = stop_sifting_fixe_h(tmINTERPstop_countFIXE_HMODE_COMPLEXndirs);
else
[stop_siftmoyenne] = stop_sifting(mtsdsd2tolINTERPMODE_COMPLEXndirs);
end
% 为了避免当前模态太小以致精度引起假的极值出现
if (max(abs(m))) < (1e-10)*(max(abs(x)))
if ~stop_sift
warning(‘emd:warning‘‘forced stop of EMD : too small amplitude‘)
else
disp(‘forced stop of EMD : too small amplitude‘)
end
break
end
% 筛选循环
while ~stop_sift && nbit if(~MODE_COMPLEX && nbit>MAXITERATIONS/5 && mod(nbitfloor(MAXITERATIONS/10))==0 && ~FIXE && nbit > 100)
disp([‘mode ‘int2str(k)‘ iteration ‘int2str(nbit)])
if exist(‘s‘‘var‘)
disp([‘stop parameter mean value : ‘num2str(s)])
end
[imiM] = extr(m);
disp([int2str(sum(m(im) > 0))‘ minima > 0; ‘int2str(sum(m(iM) < 0))‘ maxima < 0.‘])
end
%筛选
m = m - moyenne;
%均值计算和终止准则
if FIXE
[stop_siftmoyenne] = stop_sifting_fixe(tmINTERPMODE_COMPLEXndirs);
elseif FIXE_H
[stop_siftmoyennestop_count] = stop_sifting_fixe_h(tmINTERPstop_countFIXE_HMODE_COMPLEXndirs);
else
[stop_siftmoyennes] = stop_sifting(mtsdsd2tolINTERPMODE_COMPLEXndirs);
end
% 显示
if display_sifting && ~MODE_COMPLEX
NBSYM = 2;
[indminindmax] = extr(mp);
[tmintmaxmminmmax] = boundary_conditions(indminindmaxtmpmpNBSYM);
envminp = interp1(tminmmintINTERP);
envmaxp = interp1(tmaxmmaxtINTERP);
envmoyp = (envminp+envmaxp)/2;
if FIXE || FIXE_H
display_emd_fixe(tmmprenvminpenvmaxpenvmoypnbitkdisplay_sifting)
else
sxp=2*(abs(envmoyp))./(abs(envmaxp-envminp));
sp = mean(sxp);
display_emd(tmmprenvminpenvmaxpenvmoypsspsxpsdtsd2tnbitkdisplay_siftingstop_sift)
end
end
mp = m;
nbit=nbit+1;
NbIt=NbIt+1;
if(nbit==(MAXITERATIONS-1) && ~FIXE && nbit > 100)
if exist(‘s‘‘var‘)
warning(‘emd:warning‘[‘forced stop of sifting : too many iterations... mode ‘int2str(k)‘. stop parameter mean value : ‘num2str(s)])
else
warning(‘emd:warning‘[‘forced stop of sifting : too many iterations... mode ‘int2str(k)‘.‘])
end
end
end % 筛选循环
imf(k:) = m;
if display_sifting
disp([‘mode ‘int2str(k)‘ stored‘])
end
nbits(k) = nbit;
k = k+1;
r = r - m;
nbit=0;
end %主循环
if any(r) && ~any(mask)
imf(k:) = r;
end
ort = io(ximf);
if display_
相关资源
- 处理非线性非平稳信号EMD和小波变换
- 信号EMD分解的matlab程序
- 基于埃米特样条函数提取包络线实现
- EMD的MATLAB程序
- emd分解程序,时间序列分解工具
- ( eemd.m )
- EEMD的代码
- eemd源程序
- G-Rilling EMD HHT Matlab 开源代码
- 带端点延拓的EMD和原始EMD的matlab程序
- 希尔伯特黄变换HHT
- 有关emd分解的matlab源程序
- emd分解matlab代码
- EEMD matlab 工具包
- 经验模态分解MATLAB程序包emd
- EMD算法的绝对实用简单版MATLAB程序
- emd分解matlab程序172943
- CEEMDAN,EEMD和EMD.rar
- MATLAB的eemd程序
- EMD matlab代码
- package_emdEMD的matlab程序
- hht变换中emd批量处理数据
- 基于G.Rilling所写EMD的MATLAB代码的中文
- EEMD总体经验模式分解算法matlab程序
- EMD HHT MATLAB源代码,适合初学者
- CEEMD代码,matlab亲测可用
- memd代码多元经验模态分解
- emd分解程序以及HHT变换
- EMD工具箱matlab
- 经验模态分解emd源代码
评论
共有 条评论