求助EMD分解的简单例子
才接触emd没多久,很多都还只是知道原理,实际的不会做。现在我想要分解一个曲线,随便什么曲线。把上面的高频的噪声分解出来,可不可以给一个这样的例子。最好有详细的说明。因为我不是太看的懂。emd和时频工具箱我都装好了,虽然没搞懂。。。
本来我也不想发帖的,看到太多讲的太深,我不懂。论坛规则里说置顶帖的求助我也没找到,所以发了。
谢谢大家了。或者告诉下我这样的去看什么书或者从哪里学起比较好。 把一个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)%首先画出原始信号
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')
原帖由 rhenus 于 2009-7-17 16:36 发表 http://www.chinavib.com/forum/images/common/back.gif
把一个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%。是不是你复制过来的时候有复制错了或是怎么样的。总之是不行的。
。。。。。。。。。。。。。。。。。。
求助
我也想学学用emd进行信号处理,可是哪里有EMD函数的matlab程序呢? 自己编程序,emd现在应该没有官方的标准程序,自己编理解深,人家的程序,有错都发现不了。回复 6楼 hyl2323 的帖子
5楼的已经发给你了。6楼的说的对,只不过emd这个程序太复杂,涉及的函数太多,一下子看不明白,一些论文又太理论化了,很难自己编,不过最后都要自己弄懂。。。这个我也知道的。。。呵呵,只是现在还不行。。。 上面的例子中更改下面的语句就可以运行,供初学者参考。
cn = size(imf,2);
更改为
cn = size(imf,1);
回复 9楼 wains 的帖子
搜索论坛就能找到法国人Rilling的程序,这是网址,可以直接下载http://perso.ens-lyon.fr/patrick.flandrin/emd.html
回复 8楼 misslfx 的帖子
这个早已知道,在版上也混了不少时间了,还是谢谢你用的就是法国人Rilling的程序,但是得不到rhenus所贴的结果,见贴图
不知道何故?
[ 本帖最后由 wains 于 2009-8-10 14:32 编辑 ]
回复 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集
= emd(s);
figure(1);
emd_visu_1(s,t,imf,1);
其中分量三和四为虚假成分 clear
t = 0:0.01:10;
x1 = sin(2*pi*t);
x2 = sin(2*pi*10*t);
s = x1 + x2;
%IMF集
= emd(s);
figure(1);
emd_visu(s,t,imf,1);
应该这样吧。才能运行啊 为什么我运行的时候会出现这样的错误提示呢?
Undefined function or method 'emd' for input arguments of type 'double' 没添加入EMD
求助EMD
请问楼主有EMD.M文件吗。我这运行老出现不了你的结果。谢谢!!!回复 10楼 misslfx 的帖子
在一个实际测量信号的处理过程中,怎末知道emd分出来的哪个是虚假成分呢?
页:
[1]
2