开发者社区> Matlab科研工作室> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

【信号去噪】基于EEMD算法实现信号去噪附matlab代码

简介: 【信号去噪】基于EEMD算法实现信号去噪附matlab代码
+关注继续查看

?1 简介

为了抑制经验模态分解中出现的端点效应和模态混叠现象,利用白噪声辅助数据分析方法——集合经验模态分解构造一个自适应滤波器组,对原信号进行各级滤波,最终得到纯净的信号.然后与小波阈值去噪方法进行比较,通过仿真可以看出,集合经验模态分解构造的滤波器组滤波效果比较理想.

2 部分代码

% 这是一个用于显著性检验的实用程序.

%

% ? function [spmax, spmin, flag]= extrema(in_data)

%

% INPUT:

% ? ? ? in_data: Inputted data, a time series to be sifted(被筛选);

% OUTPUT:

% ? ? ? spmax: The locations (col 1) of the maxima and its corresponding

% ? ? ? ? ? ? ?values (col 2)

% ? ? ? spmin: The locations (col 1) of the minima and its corresponding

% ? ? ? ? ? ? ?values (col 2)

%

% References can be found in the "Reference" section.

%

% The code is prepared by Zhaohua Wu. For questions, please read the "Q&A" section or

% contact

% ? zwu@fsu.edu

%

function [spmax, spmin, flag]= extrema(in_data)

flag=1;

dsize=length(in_data);

spmax(1,1) = 1;

spmax(1,2) = in_data(1);

jj=2;

kk=2;

while jj<dsize

? ? if ( in_data(jj-1)<=in_data(jj) && in_data(jj)>=in_data(jj+1) )

? ? ? ? spmax(kk,1) = jj;

? ? ? ? spmax(kk,2) = in_data (jj);

? ? ? ? kk = kk+1;

? ? end

? ? jj=jj+1;

end

spmax(kk,1)=dsize;

spmax(kk,2)=in_data(dsize);

if kk>=4

? ? slope1=(spmax(2,2)-spmax(3,2))/(spmax(2,1)-spmax(3,1));

? ? tmp1=slope1*(spmax(1,1)-spmax(2,1))+spmax(2,2);

? ? if tmp1>spmax(1,2)

? ? ? ? spmax(1,2)=tmp1;

? ? end

? ? slope2=(spmax(kk-1,2)-spmax(kk-2,2))/(spmax(kk-1,1)-spmax(kk-2,1));

? ? tmp2=slope2*(spmax(kk,1)-spmax(kk-1,1))+spmax(kk-1,2);

? ? if tmp2>spmax(kk,2)

? ? ? ? spmax(kk,2)=tmp2;

? ? end

else

? ? flag=-1;

end

msize=size(in_data);

dsize=max(msize);

xsize=dsize/3;

xsize2=2*xsize;

spmin(1,1) = 1;

spmin(1,2) = in_data(1);

jj=2;

kk=2;

while jj<dsize

? ? if ( in_data(jj-1)>=in_data(jj) && in_data(jj)<=in_data(jj+1))

? ? ? ? spmin(kk,1) = jj;

? ? ? ? spmin(kk,2) = in_data (jj);

? ? ? ? kk = kk+1;

? ? end

? ? jj=jj+1;

end

spmin(kk,1)=dsize;

spmin(kk,2)=in_data(dsize);

if kk>=4

? ? slope1=(spmin(2,2)-spmin(3,2))/(spmin(2,1)-spmin(3,1));

? ? tmp1=slope1*(spmin(1,1)-spmin(2,1))+spmin(2,2);

? ? if tmp1<spmin(1,2)

? ? ? ? spmin(1,2)=tmp1;

? ? end

? ? slope2=(spmin(kk-1,2)-spmin(kk-2,2))/(spmin(kk-1,1)-spmin(kk-2,1));

? ? tmp2=slope2*(spmin(kk,1)-spmin(kk-1,1))+spmin(kk-1,2);

? ? if tmp2<spmin(kk,2)

? ? ? ? spmin(kk,2)=tmp2;

? ? end

else

? ? flag=-1;

end

flag=1;

3 仿真结果

image

image.gif编辑

image

image.gif编辑

image

image.gif编辑

4 参考文献

[1]周先春, and 嵇亚婷. "基于EEMD算法在信号去噪中的应用." 电子设计工程 22.8(2014):3.

博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。

部分理论引用网络文献,若有侵权联系博主删除。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【图像检测】基于最近邻算法实现苹果病害识别附matlab代码
【图像检测】基于最近邻算法实现苹果病害识别附matlab代码
0 0
【路径规划】基于A星算法实现机器人栅格地图路径规划附matlab代码
【路径规划】基于A星算法实现机器人栅格地图路径规划附matlab代码
0 0
基于蝙蝠算法实现电力系统经济调度(Matlab代码实现)
基于蝙蝠算法实现电力系统经济调度(Matlab代码实现)
0 0
基于最小均方 (LMS) 算法实现线性信道估计附matlab代码
基于最小均方 (LMS) 算法实现线性信道估计附matlab代码
0 0
【KNN分类】基于KNN算法实现数据分类附matlab完整代码
【KNN分类】基于KNN算法实现数据分类附matlab完整代码
0 0
【光伏】基于CJAYA算法实现光伏模型SDM参数估计优化附matlab代码
【光伏】基于CJAYA算法实现光伏模型SDM参数估计优化附matlab代码
0 0
【特征选择】基于教与学算法实现二进制特征选择问题附matlab代码
【特征选择】基于教与学算法实现二进制特征选择问题附matlab代码
0 0
利用Astar算法实现飞行轨迹的三维规划附Matlab代码
利用Astar算法实现飞行轨迹的三维规划附Matlab代码
0 0
【经济调度】基于蝙蝠算法实现电力系统经济调度附Matlab代码
【经济调度】基于蝙蝠算法实现电力系统经济调度附Matlab代码
0 0
【无人机】基于PID控制器和A星算法实现无人机路径规划附matlab代码
【无人机】基于PID控制器和A星算法实现无人机路径规划附matlab代码
0 0
+关注
Matlab科研工作室
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题关注公众号 天天Matlab。
文章
问答
文章排行榜
最热
最新
相关电子书
更多
基于神经网络的语言合成
立即下载
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
http://www.vxiaotou.com