資源簡介
這個代碼雖然雖然也是在網上下的,但是為了更好的理解,加了自己的注釋。
代碼片段和文件信息
function?allmode=ceemd(YNstdNETNM)
xsize=length(Y);
dd=1:1:xsize;
%?Nornaliz?data
Ystd=std(Y);
Y=Y/Ystd;
%?Initialize?saved?data
TNM2=TNM+2;?????%增加第1列是原始信號,最后第TNM+2列是余項
for?kk=1:1:TNM2
????for?ii=1:1:xsize
????????allmode(iikk)=0.0;
????end
end
for?iii=1:1:NE
%?adding?noise
????for?i=1:xsize
????????temp=randn(11)*Nstd;???%X1,X2增加同一噪聲
????????X1(i)=Y(i)+temp;
????????X2(i)=Y(i)-temp;
????end
%?sifting(篩選)?X1
????xorigin?=?X1;
????xend?=?xorigin;
%?save?the?initial?data?into?the?first?column
????for?jj=1:1:xsize
????????mode(jj1)?=?xorigin(jj);
????end
????nmode?=?1;
????while?nmode?<=?TNM
?????????xstart?=?xend;
????????iter?=?1;
????????while?iter<=5??%迭代5次得到每個IMF,沒有用終止條件
?????????????[spmax?spmin?flag]=extrema(xstart);
?????????????upper=?spline(spmax(:1)spmax(:2)dd);
?????????????lower=?spline(spmin(:1)spmin(:2)dd);
?????????????mean_ul?=?(upper?+?lower)/2;
?????????????xstart?=?xstart?-?mean_ul;
?????????????iter?=?iter?+1;
????????end
????????xend?=?xend?-?xstart;??%得到1個xstart=IMF1
????????nmode=nmode+1;?????????%繼續下一個IMF的篩選循環
????%?save?a?mode
????????for?jj=1:1:xsize
????????????mode(jjnmode)?=?xstart(jj);
????????end
????end
????%?save?the?tre
評論
共有 條評論