資源簡介
壓縮包內有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?
??%?當前模式
??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
評論
共有 條評論