资源简介
这个代码虽然虽然也是在网上下的,但是为了更好的理解,加了自己的注释。
代码片段和文件信息
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
评论
共有 条评论