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;