huangqiang 发表于 2009-9-17 10:43

G. Rilling EMD分解程序端点延拓问题

G. Rilling的EMD分解边界处理函数function = boundary_conditions(indmin,indmax,t,x,z,nbsym)
有这么两句:
% 将序列根据对称中心,镜像到两边
tlmin = 2*t(lsym)-t(lmin);%左边镜像
tlmax = 2*t(lsym)-t(lmax);
trmin = 2*t(rsym)-t(rmin); %右边镜像
trmax = 2*t(rsym)-t(rmax);

但分解结果端点效应的处理右端比左端要好,这是为何?
fs=200;
t = 1/fs:1/fs:1;
a=cos(2*pi*100*t);
b=cos(2*pi*30*t);
c=cos(2*pi*10*t);
s = a+b+c;
OPTIONS.FIX = 50;%设置迭代计算筛分次数
imf=emd(s,OPTIONS);
err1=a-imf(1,:);
err2=b-imf(2,:);
err3=c-imf(3,:);

figure(1)
subplot(411)
plot(t,s);
subplot(412)
plot(t,err1)
subplot(413)
plot(t,err2)
subplot(414)
plot(t,err3)

[ 本帖最后由 huangqiang 于 2009-9-17 11:07 编辑 ]

huangqiang 发表于 2009-9-17 10:55

把左边镜像做一下小改动,结果好像稍微好一些
% 将序列根据对称中心,镜像到两边
tlmin = -t(lmin);
tlmax = -t(lmax);

trmin = 2*t(rsym)-t(rmin);
trmax = 2*t(rsym)-t(rmax);
不解,盼高人指点。

pasuka 发表于 2009-9-17 11:13

原帖由 huangqiang 于 2009-9-17 10:43 发表 http://www.chinavib.com/forum/images/common/back.gif
G. Rilling的EMD分解边界处理函数function = boundary_conditions(indmin,indmax,t,x,z,nbsym)
有这么两句:
% 将序列根据对称中心,镜像到两边
tlmin = 2*t(lsym)-t(lmin);%左边镜像
...
lz的信号太完美了,换个别的,估计就是另一种结果了

huangqiang 发表于 2009-9-17 11:36

这个信号分解已经相当糟糕了,
但仍然可以看出右端效果较好。
fs=200;
t = 1/fs:1/fs:1;
a=cos(2*pi*80*t);
b=cos(2*pi*30*t);
c=cos(2*pi*10*t);

huangqiang 发表于 2009-9-17 14:06

呵呵……已经知道问题出哪儿了。

七七seven 发表于 2009-9-17 19:42

LZ可以分享一下啊
问题出在哪

excalibur1982 发表于 2009-11-5 19:58

问题出在哪?楼主分享一下啊

nkdtxf 发表于 2010-1-4 17:27

就是啊,原因出在哪里呢?

吃书的老虎 发表于 2010-1-4 22:38

G. Rilling的端点延拓不仅仅是对称延拓,他是根据端点和第一个极值点的关系再决定延拓的方法。楼主的问题我估计是左右端点不是同一种情况导致的。因为信号是周期的,可以将端点取成相同的,延拓应该左右情况会相同。

zhjinctgu 发表于 2011-12-24 10:57

{:{23}:}哦,原来如此~

xieqiyu1063 发表于 2012-11-2 09:41

楼主太监了

lovesea 发表于 2013-4-1 16:11

本帖最后由 lovesea 于 2013-4-1 16:18 编辑

楼主,问题出在哪了?分享下啊!是信号取的不对称的结果吧?

华电机械 发表于 2013-8-18 17:34

lz现在对端点处理进展的怎么样,,有没有做出很好的改进,效果怎么样,贴图讨论下
页: [1]
查看完整版本: G. Rilling EMD分解程序端点延拓问题