声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 6009|回复: 19

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

  [复制链接]
发表于 2010-12-29 08:50 | 显示全部楼层 |阅读模式

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

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

x
大家吧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),采样率设置越高越好!否则达不到第二篇论文效果!

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

 楼主| 发表于 2010-12-29 08:51 | 显示全部楼层
我怎么上传不了附件呢?程序贴出来了!
%
% 本算法在左右只延拓极大极小值点各一个
%
function [tmin,tmax,zmin,zmax] = 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)
   
    if  length(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 = [tlmin t(indmin) trmin];
tmax = [tlmax t(indmax) trmax];
% 返回纵坐标
zmin = [zlmin z(indmin) zrmin];
zmax = [zlmax z(indmax) zrmax];
end

评分

1

查看全部评分

发表于 2010-12-29 10:14 | 显示全部楼层
什么是ISBM?
 楼主| 发表于 2010-12-29 10:17 | 显示全部楼层
回复 3 # Cena马 的帖子

IMPROVED SLOPE BASED METHOD,你看一下第二篇论文,有几个图,一看就明白;我测试了作者的效果,对其所给类型曲线很有效~
发表于 2011-1-2 13:11 | 显示全部楼层
ISBM也是头一回听说,学习一下,是把边界条件该一下吗。不知道效果如何呢。
 楼主| 发表于 2011-1-2 22:35 | 显示全部楼层
回复 5 # nkdtxf 的帖子

对啊,你看看第二篇论文,虽然是英文的不过是中国人改进的算法(原理是外国人发明的),投的国外杂志,效果挺好,尤其对于非对称混合信号!
发表于 2011-1-4 17:11 | 显示全部楼层
对一般的振动信号,故障诊断,效果如何呢。原理是外国人发明,是不是法国人那个算法呢
 楼主| 发表于 2011-1-4 18:30 | 显示全部楼层
回复 7 # nkdtxf 的帖子

我还没做一般的故障试验,不是法国人G.RIILIG
 楼主| 发表于 2011-1-9 18:08 | 显示全部楼层
回复 9 # 星上人 的帖子

去谷歌学术搜索,一搜就是
发表于 2011-1-10 15:48 | 显示全部楼层
回复 10 # aishuishou 的帖子

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

抱歉,由于我是刚刚接触,所以很多都不懂,多谢你的解答~
 楼主| 发表于 2011-1-11 23:55 | 显示全部楼层
回复 11 # 星上人 的帖子

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

中文注释emd.rar

9.84 KB, 下载次数: 61

发表于 2011-1-14 21:56 | 显示全部楼层
楼主的文章,再g学术中都没有找到可下载的
发表于 2011-1-15 20:01 | 显示全部楼层
谢谢!还是高手!呵呵
发表于 2011-1-17 15:46 | 显示全部楼层
回复 12 # aishuishou 的帖子

楼主,我初步知道怎么使用你的程序了,你能不能上这个帖子看看,用你给的那个算法和原先的算法哪个的效果更好?谢谢了~
http://forum.vibunion.com/thread-99245-1-1.html
 楼主| 发表于 2011-1-26 17:08 | 显示全部楼层
回复 14 # bangder_ing 的帖子

去google学术搜索网站
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-12-27 11:22 , Processed in 0.082384 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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