声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 10934|回复: 21

[HHT] 求助EMD分解的简单例子

[复制链接]
发表于 2009-7-17 09:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
才接触emd没多久,很多都还只是知道原理,实际的不会做。

现在我想要分解一个曲线,随便什么曲线。把上面的高频的噪声分解出来,可不可以给一个这样的例子。最好有详细的说明。因为我不是太看的懂。emd和时频工具箱我都装好了,虽然没搞懂。。。

本来我也不想发帖的,看到太多讲的太深,我不懂。论坛规则里说置顶帖的求助我也没找到,所以发了。

谢谢大家了。或者告诉下我这样的去看什么书或者从哪里学起比较好。

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2009-7-17 16:36 | 显示全部楼层
把一个10hz和一个1hz的分量叠加,然后用emd处理就会把他们分开
clear
t = 0:0.01:10;
x1 = sin(2*pi*t);
x2 = sin(2*pi*10*t);
sig = x1 + x2;
[imf,r] = emd(sig);
cn = size(imf,2);
subplot(cn+2,1,1)%首先画出原始信号
plot(sig)
title('original sigal')
for k = 2:cn+1%循环画出imf分量
subplot(cn+2,1,k)
plot(imf(:,k-1))
title(['imf ',num2str(k-1)])
end
subplot(cn+2,1,cn+2)%最后画出残余量
plot(r)
title('residual')
1.jpg

评分

1

查看全部评分

 楼主| 发表于 2009-7-20 10:16 | 显示全部楼层
原帖由 rhenus 于 2009-7-17 16:36 发表
把一个10hz和一个1hz的分量叠加,然后用emd处理就会把他们分开
clear
t = 0:0.01:10;
x1 = sin(2*pi*t);
x2 = sin(2*pi*10*t);
sig = x1 + x2;
= emd(sig);
cn = size(imf,2);
subplot(cn+2,1,1)%首先画出原 ...


你的程序是挺容易理解的,但是我一运行就卡死在那里了,CPU占用马上到100%。是不是你复制过来的时候有复制错了或是怎么样的。总之是不行的。

。。。。。。。。。。。。。。。。。。
发表于 2009-7-23 07:25 | 显示全部楼层

求助

我也想学学用emd进行信号处理,可是哪里有EMD函数的matlab程序呢?
发表于 2009-7-23 08:35 | 显示全部楼层
自己编程序,emd现在应该没有官方的标准程序,自己编理解深,人家的程序,有错都发现不了。
 楼主| 发表于 2009-7-23 10:01 | 显示全部楼层

回复 6楼 hyl2323 的帖子

5楼的已经发给你了。

6楼的说的对,只不过emd这个程序太复杂,涉及的函数太多,一下子看不明白,一些论文又太理论化了,很难自己编,不过最后都要自己弄懂。。。这个我也知道的。。。呵呵,只是现在还不行。。。
发表于 2009-8-7 17:14 | 显示全部楼层
上面的例子中更改下面的语句就可以运行,供初学者参考。
cn = size(imf,2);
更改为
cn = size(imf,1);
发表于 2009-8-8 10:44 | 显示全部楼层

回复 9楼 wains 的帖子

搜索论坛就能找到法国人Rilling的程序,这是网址,可以直接下载
http://perso.ens-lyon.fr/patrick.flandrin/emd.html
发表于 2009-8-10 14:31 | 显示全部楼层

回复 8楼 misslfx 的帖子

这个早已知道,在版上也混了不少时间了,还是谢谢你
用的就是法国人Rilling的程序,但是得不到rhenus所贴的结果,见贴图
不知道何故? result.jpg

[ 本帖最后由 wains 于 2009-8-10 14:32 编辑 ]
发表于 2009-8-10 22:05 | 显示全部楼层

回复 9楼 wains 的帖子

用Rilling的程序,rhenus的信号可分解为:

clear
t = 0:0.01:10;
x1 = sin(2*pi*t);
x2 = sin(2*pi*10*t);
s = x1 + x2;
%IMF集
[imf,ort,nbits] = emd(s);

figure(1);
emd_visu_1(s,t,imf,1); untitled.jpg

其中分量三和四为虚假成分
发表于 2009-10-29 09:01 | 显示全部楼层
clear
t = 0:0.01:10;
x1 = sin(2*pi*t);
x2 = sin(2*pi*10*t);
s = x1 + x2;
%IMF集
[imf,ort,nbits] = emd(s);

figure(1);
emd_visu(s,t,imf,1);

应该这样吧。才能运行啊
发表于 2009-11-9 17:04 | 显示全部楼层
为什么我运行的时候会出现这样的错误提示呢?
Undefined function or method 'emd' for input arguments of type 'double'
发表于 2009-11-10 20:59 | 显示全部楼层
没添加入EMD
发表于 2010-1-16 11:21 | 显示全部楼层

求助EMD

请问楼主有EMD.M文件吗。我这运行老出现不了你的结果。谢谢!!!
发表于 2010-1-20 16:19 | 显示全部楼层

回复 10楼 misslfx 的帖子

在一个实际测量信号的处理过程中,怎末知道emd分出来的哪个是虚假成分呢?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-29 04:25 , Processed in 0.088626 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表