aishuishou 发表于 2010-12-29 08:50

分享一下我的成果:基于ISBM延拓的EMD

大家吧Rilling里面的boundary_conditions全部替换为我的boundary_sbm即可!参考论文是《Performance and limitations of HHT with an application to irregular waterwaves》(这个论文提出了原始的SBM),还有《An improved method for restraining the end effect in empirical modede composition and its applications to the fault diagnosis of large rotating machinery》(这一篇提出了ISBM),采样率设置越高越好!否则达不到第二篇论文效果!

aishuishou 发表于 2010-12-29 08:51

我怎么上传不了附件呢?程序贴出来了!
%
% 本算法在左右只延拓极大极小值点各一个
%
function = boundary_sbm(indmin,indmax,t,x,z,nbsym)
%
% isbm是判断是否进行isbm的算法,默认进行sbm而非isbm
% 但我默认进行isbm算法了

isbm=1;
lx=length(x);

if (length(indmin) + length(indmax) < 3)
error('Not Enough Extrema...')
end
%
% 前端处理
%
% 第一个极值是最极大值
if indmax(1) < indmin(1)
    if length(indmin)<2 % indmin(2)不一定存在
      tlmin=t(indmin(1))+t(indmax(1))-t(indmax(2));
    else
      tlmin=2*t(indmin(1))-t(indmin(2));
    end
    tlmax=2*t(indmax(1))-t(indmax(2));
    %
    % 此处s1,s2是斜率,严格遵守数学概念,有正负之分
    s1=(z(indmax(2))-z(indmin(1)))/(t(indmax(2))-t(indmin(1)));
    s2=(z(indmin(1))-z(indmax(1)))/(t(indmin(1))-t(indmax(1)));
   
    zlmin=z(indmax(1))-s1*(t(indmax(1))-tlmin);
    zlmax=zlmin-s2*(tlmin-tlmax);
    %
    % 是不是进行更精确的isbm算法
    if isbm
      if zlmin>z(1)
            zlmin=z(1);
            tlmin=t(1);
      end
    end
else % 第一个极值是最极小值
    %
    tlmin=2*t(indmin(1))-t(indmin(2));
    if length(indmax)<2 % indmax(2)不一定存在
      tlmax=t(indmax(1))+t(indmin(1))-t(indmin(2));
    else
      tlmax=2*t(indmax(1))-t(indmax(2));
    end
    s1=(z(indmin(2))-z(indmax(1)))/(t(indmin(2))-t(indmax(1)));
    s2=(z(indmax(1))-z(indmin(1)))/(t(indmax(1))-t(indmin(1)));
    %
    % 此处s1,s2是斜率,严格遵守数学概念,有正负之分
    zlmax=z(indmin(1))-s1*(t(indmin(1))-tlmax);% 草,这里曾经写错了tlmin
    zlmin=zlmax-s2*(tlmax-tlmin);
    %
    % 是不是进行更精确的isbm算法
    if isbm
      if zlmax<z(1)
            zlmax=z(1);
            tlmax=t(1);
      end
    end         
end
%
% 末端处理
%
if indmax(end) < indmin(end)
   
    iflength(indmax)<2
      trmax=t(indmax(end))+t(indmin(end))-t(indmin(end-1));
    else
      trmax=2*t(indmax(end))-t(indmax(end-1));
    end
    trmin=2*t(indmin(end))-t(indmin(end-1));
    %
    % 此处s1,s2是斜率,严格遵守数学概念,有正负之分
    s1=(z(indmax(end))-z(indmin(end-1)))/(t(indmax(end))-t(indmin(end-1)));
    s2=(z(indmin(end))-z(indmax(end)))/(t(indmin(end))-t(indmax(end)));
   
    zrmax=z(indmin(end))-s1*(t(indmin(end))-trmax);
    zrmin=zrmax-s2*(trmax-trmin);
    %
    % 是不是进行更精确的isbm算法
    if isbm
      if zrmax<z(end)
            zrmax=z(end);
            trmax=t(end);
      end
    end   
else
    %
    if length(indmin)<2
      trmin=t(indmin(end))+t(indmax(end))-t(indmax(end-1));
    else
      trmin=2*t(indmin(end))-t(indmin(end-1));
    end
    trmax=2*t(indmax(end))-t(indmax(end-1));
    %
    % 此处s1,s2是斜率,严格遵守数学概念,有正负之分   
    s1=(z(indmin(end))-z(indmax(end-1)))/(t(indmin(end))-t(indmax(end-1)));
    s2=(z(indmax(end))-z(indmin(end)))/(t(indmax(end))-t(indmin(end)));
   
    zrmin=z(indmax(end))-s1*(t(indmax(end))-trmin);
    zrmax=zrmin-s2*(trmin-trmax);
    %
    % 是不是进行更精确的isbm算法
    if isbm
      if zrmin>z(end)
            zrmax=z(end);
            trmax=t(end);
      end
    end   
end
%
% 完成延拓,更新处理后的序列
% 返回横坐标
tmin = ;
tmax = ;
% 返回纵坐标
zmin = ;
zmax = ;
end

Cena马 发表于 2010-12-29 10:14

什么是ISBM?

aishuishou 发表于 2010-12-29 10:17

回复 3 # Cena马 的帖子

IMPROVED SLOPE BASED METHOD,你看一下第二篇论文,有几个图,一看就明白;我测试了作者的效果,对其所给类型曲线很有效~

nkdtxf 发表于 2011-1-2 13:11

ISBM也是头一回听说,学习一下,是把边界条件该一下吗。不知道效果如何呢。

aishuishou 发表于 2011-1-2 22:35

回复 5 # nkdtxf 的帖子

对啊,你看看第二篇论文,虽然是英文的不过是中国人改进的算法(原理是外国人发明的),投的国外杂志,效果挺好,尤其对于非对称混合信号!

nkdtxf 发表于 2011-1-4 17:11

对一般的振动信号,故障诊断,效果如何呢。原理是外国人发明,是不是法国人那个算法呢

aishuishou 发表于 2011-1-4 18:30

回复 7 # nkdtxf 的帖子

我还没做一般的故障试验,不是法国人G.RIILIG

aishuishou 发表于 2011-1-9 18:08

回复 9 # 星上人 的帖子

去谷歌学术搜索,一搜就是

星上人 发表于 2011-1-10 15:48

回复 10 # aishuishou 的帖子

谢谢楼主,我已经找到了。再请教一个问题,应该装哪个工具箱呢?我从网上下载的EMD工具箱,还有HHT工具箱,应该是装哪个呢?或者楼主能不能提供一个工具箱。

抱歉,由于我是刚刚接触,所以很多都不懂,多谢你的解答~

aishuishou 发表于 2011-1-11 23:55

回复 11 # 星上人 的帖子

你不搞HHT的话装emd工具箱就够了,可以装HHT(应该更全,我没试过)。我只把工具箱里最主要的emd.m完善了中文注释(程序貌似不小心改动哪了,不能运行了,但是可以参考注释),一回贴出来。分解的话这个emd.m就足够了,其他文件函数作用参见G.rilling的《ON EMPIRICAL MODE DECOMPOSITION AND ITS ALGORITHMS》一文。入门级问题论坛基本有结果了,为响应论坛精神,你可以先搜搜旧帖子看。

bangder_ing 发表于 2011-1-14 21:56

楼主的文章,再g学术中都没有找到可下载的

SMALLTIGER 发表于 2011-1-15 20:01

谢谢!还是高手!呵呵

星上人 发表于 2011-1-17 15:46

回复 12 # aishuishou 的帖子

楼主,我初步知道怎么使用你的程序了,你能不能上这个帖子看看,用你给的那个算法和原先的算法哪个的效果更好?谢谢了~
http://forum.vibunion.com/thread-99245-1-1.html

aishuishou 发表于 2011-1-26 17:08

回复 14 # bangder_ing 的帖子

去google学术搜索网站
页: [1] 2
查看完整版本: 分享一下我的成果:基于ISBM延拓的EMD