资源简介
压缩包内有2个M文件,分别是带端点延拓的EMD分解程序和不带端点延拓的EMD分解程序

代码片段和文件信息
%2007新出来的包含复数的emd函数(镜像延拓)
function [imfortnbits] = emd1(varargin)
[xtsdsd2tolMODE_COMPLEXndirsdisplay_siftingsdtsd2trimfknbitNbItMAXITERATIONSFIXEFIXE_HMAXMODESINTERPmask] = init(varargin{:});
if display_sifting
fig_h = figure;
end
% 主循环 : 至少要求存在3个极值点,如果采用mask信号,不进入主循环
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 % 如果设定了迭代次数,且保留停止条件|#zeros-#extrema|<=1
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))) % IMF的最大值小于信号最大值的1e-10
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‘)%查找是否存在变量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
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 18487 2010-12-02 18:45 带端点延拓的EMD和原始EMD的matlab程序\emd1.m
文件 20681 2011-03-04 08:18 带端点延拓的EMD和原始EMD的matlab程序\emd4.m
目录 0 2011-03-15 08:09 带端点延拓的EMD和原始EMD的matlab程序
----------- --------- ---------- ----- ----
39168 3
相关资源
- EMD 算法MATLAB 程序
- Norden E.Huang的FEEMD算法
- EEMD的MATLAB程序
- eemd分解和作图
- eemd算法程序 matlab代码
- MATLAB信号处理EEMD工具箱
- EMD matlab实现源码
- EEMD集成经验模态分解matlab程序.rar
- emd和eemd算法的matlab源程序
- 中央大学 EMD HHT Matlab 源代码
- EMD HHT Matlab 信号分析,Google英文原版
- HHT变换的3种方法
- matlab自带HHT算法,最简洁的EMD分解
- ModelPredictiveControlSystemDesignandImplement
- 西储大学轴承故障分析matlab代码
- Matlab EMD工具箱+时频分析TFTB工具箱
- 经验模态分解+样本熵matlab程序代码
- 西储大学轴承数据及EMD代码
- MATLAB 2016可用 EMD工具箱
- 振动信号EMD分析matlab算法-abbr_96cb004
- EEMD算法工具包
- 基于EMD分解·和希尔伯特变换(HHT)的
- MATLAB——FEEMD.rar
- EEMD集合经验模态分解matlab程序代码
- 经验模态分解EMD对复杂信号进行分解
- 经验模态分解算法EMD MATLAB程序
- emd算法的matlab实现
- EMD过程中数据拟合的算法改进与实现
- emd程序,EMD分解算法
- 可以运行的EMD工具箱针对hhspectrum错误
评论
共有 条评论