EEMD+小波阈值信号去噪重构,多指标多图版本,matlab代码,直接运行


目录

  • EEMD+小波阈值信号去噪重构,多指标多图版本,matlab代码,直接运行
  • 效果一览
  • 基本介绍
  • 程序设计
  • 参考资料


效果一览

EEMD+小波阈值信号去噪重构,matlab代码,直接运行_参考资料

基本介绍

Matlab实现EEMD+小波阈值信号去噪重构,多指标多图版本,matlab代码,直接运行
1.分解效果图 ,效果如图所示,可完全满足您的需求~
2.直接替换数据即可用 适合新手小白 注释清晰~
3.附赠案例数据 直接运行main一键出图~

EEMD去噪:对原始信号进行EEMD分解,计算分解得到的各个IMF分量与原始信号的相关性系
数,选取相关性系数高的IMF分量进行重构去噪。
小波阈值去噪:对原始信号进行小波阈值去噪,可以设置小波分解层数以及小波函数还有阈值
估计方法(启发式阈值、自适应阈值、固定阈值、极大极小阈值)以及软硬阈值的设置,并对其画
图。
EEMD+小波阈值联合去噪:首先对原始信号进行EEMD分解,然后对分解出来的各个IMF分量
进行相关性计算,然后对各个IMF分量进行小波阈值去噪,最后对去完的IMF分量进行相加重构
完成去噪。

程序设计

  • 完整源码和数据获取方式私信回复EEMD+小波阈值信号去噪重构,多指标多图版本,matlab代码,直接运行
x=x(:)';
desvio_x=std(x);
x=x/desvio_x;

modes=zeros(size(x));
temp=zeros(size(x));
aux=zeros(size(x));
acum=zeros(size(x));
iter=zeros(NR,round(log2(length(x))+5));

for i=1:NR
    white_noise{i}=randn(size(x));%creates the noise realizations
end;

for i=1:NR
    modes_white_noise{i}=emd(white_noise{i});%calculates the modes of white gaussian noise
end;

for i=1:NR %calculates the first mode
    temp=x+Nstd*white_noise{i};
    [temp, o, it]=emd(temp,'MAXMODES',1,'MAXITERATIONS',MaxIter);
    temp=temp(1,:);
    aux=aux+temp/NR;
    iter(i,1)=it;
end;

modes=aux; %saves the first mode
k=1;
aux=zeros(size(x));
acum=sum(modes,1);

while  nnz(diff(sign(diff(x-acum))))>2 %calculates the rest of the modes
    for i=1:NR
        tamanio=size(modes_white_noise{i});
        if tamanio(1)>=k+1
            noise=modes_white_noise{i}(k,:);
            noise=noise/std(noise);
            noise=Nstd*noise;
            try
                [temp, o, it]=emd(x-acum+std(x-acum)*noise,'MAXMODES',1,'MAXITERATIONS',MaxIter);
                temp=temp(1,:);
            catch
                it=0;
                temp=x-acum;
            end;
        else
            [temp, o, it]=emd(x-acum,'MAXMODES',1,'MAXITERATIONS',MaxIter);
            temp=temp(1,:);
        end;
        aux=aux+temp/NR;
    iter(i,k+1)=it;    
    end;
    modes=[modes;aux];
    aux=zeros(size(x));
    acum=zeros(size(x));
    acum=sum(modes,1);
    k=k+1;
end;
modes=[modes;(x-acum)];
[a b]=size(modes);
iter=iter(:,1:a);
modes=modes*desvio_x;
its=iter;