首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >EMD算法的简单介绍,matlab安装包的安装以及其应用![通俗易懂]

EMD算法的简单介绍,matlab安装包的安装以及其应用![通俗易懂]

作者头像
全栈程序员站长
发布2022-09-06 10:26:16
发布2022-09-06 10:26:16
1K00
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

EMD(经验模态分解)是由美国NASA的黄锷博士提出的一种信号处理方法。EMD将信号分解为频率按照从高到低的一系列模态分量,并由于噪声占主导的分量主要是高频信号,有效信号占主导的分量主要是低频信号,因而它们之间存在着一个分界点,当找到这个分界点时即可实现对信号的降噪。

EMD的每一个固有模态分量均满足以下两个条件:其极值点和过零点的个数相等或者相差至多为1,任意一点的上下包络线均值为零。EMD进行“筛分”步骤总结如下:

1)使用三次样条曲线拟合信号的极大值点和极小值点,形成了上下包络线,其次计算出上下包络线的均值,然后令信号减去该均值后则可得到了一个新的信号;再次重复上述方法求取上下包络线和均值以及新的信号,直至最后得到信号满足固有模态分量的两个条件;

2)将原始信号减去所有的固有模态分量得到的残余信号代入步骤1)运算,直至最后的残余信号为满足一定的条件时,则停止分解,其即为余项。

EMD安装包的下载:https://download.csdn.net/download/qq_27806947/10366188 其安装过程如下:

1)找到matlab安装目录下的toolbox,并把安装包粘贴进去!

2)添加maltab的路径,设置路径-添加并包含子文件夹-选中toolbox下的package_emd-保存-关闭如下图所示:

3)在命令行中运行命令:install_emd即可!

这里使用EMD分解一个加速度信号,程序和结果如下图所示:

代码语言:javascript
代码运行次数:0
运行
复制
modos=emd(s1); %已经知道结果是2个固有模态分量和一个余项了,否则应该用for循环和size(modos)
figure
plot(t1,s1)
xlabel('时间/s');
ylabel('位移/m');
title('原始信号')


figure
subplot(3,1,1)
plot(t1,modos(1,:))
title('EMD分解的信号')

ylabel('IMF1/m');


subplot(3,1,2)
plot(t1,modos(2,:))

ylabel('IMF2/m');


subplot(3,1,3)
plot(t1,modos(3,:))
xlabel('时间/s');
ylabel('余项/m');

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/134717.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年6月6,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档