• 大小: 3KB
    文件类型: .m
    金币: 2
    下载: 1 次
    发布日期: 2021-05-13
  • 语言: Matlab
  • 标签:

资源简介

这个代码虽然虽然也是在网上下的,但是为了更好的理解,加了自己的注释。

资源截图

代码片段和文件信息

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

评论

共有 条评论