• 哇奥
    了解作者
  • C/C++
    开发工具
  • 1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 0
    下载次数
  • 2021-02-03 10:15
    上传日期
算法程序的具体过程,有人可以帮忙看看其中添加噪声中RANDN生成的怎么控制他的噪声幅值啊,程序直接生成正太随机数,但怎么实现参数自适应性呢
eemd.rar
  • eemd.m
    3.5KB
内容介绍
% This is an EMD/EEMD program % % function allmode=eemd(Y,Nstd,NE) % % INPUT: % Y: Inputted data; % Nstd: ratio of the standard deviation of the added noise and that of Y; % NE: Ensemble number for the EEMD % OUTPUT: % A matrix of N*(m+1) matrix, where N is the length of the input % data Y, and m=fix(log2(N))-1. Column 1 is the original data, columns 2, 3, ... % m are the IMFs from high to low frequency, and comlumn (m+1) is the % residual (over all trend). % % NOTE: % It should be noted that when Nstd is set to zero and NE is set to 1, the % program degenerates to a EMD program. % % References can be found in the "Reference" section. % % The code is prepared by Zhaohua Wu. For questions, please read the "Q&A" section or % contact % zhwu@cola.iges.org % function allmode=eemd(Y,Nstd,NE) xsize=length(Y); dd=1:1:xsize; Ystd=std(Y); Y=Y/Ystd; TNM=fix(log2(xsize))-1; TNM2=TNM+2; for kk=1:1:TNM2, for ii=1:1:xsize, allmode(ii,kk)=0.0; end end for iii=1:1:NE, for i=1:xsize, temp=randn(1,1)*Nstd; X1(i)=Y(i)+temp; end for jj=1:1:xsize, mode(jj,1) = Y(jj); end xorigin = X1; xend = xorigin; nmode = 1; while nmode <= TNM, xstart = xend; iter = 1; while iter<=10, [spmax, spmin, flag]=extrema1(xstart); upper= spline(spmax(:,1),spmax(:,2),dd); lower= spline(spmin(:,1),spmin(:,2),dd); mean_ul = (upper + lower)/2; xstart = xstart - mean_ul; iter = iter +1; end xend = xend - xstart; nmode=nmode+1; for jj=1:1:xsize, mode(jj,nmode) = xstart(jj); end end for jj=1:1:xsize, mode(jj,nmode+1)=xend(jj); end allmode=allmode+mode; end allmode=allmode/NE; allmode=allmode*Ystd; end function [spmax, spmin, flag]= extrema1(in_data) flag=1; dsize=length(in_data); spmax(1,1) = 1; spmax(1,2) = in_data(1); jj=2; kk=2; while jj<dsize, if ( in_data(jj-1)<=in_data(jj) & in_data(jj)>=in_data(jj+1) ) spmax(kk,1) = jj; spmax(kk,2) = in_data (jj); kk = kk+1; end jj=jj+1; end spmax(kk,1)=dsize; spmax(kk,2)=in_data(dsize); if kk>=4 slope1=(spmax(2,2)-spmax(3,2))/(spmax(2,1)-spmax(3,1)); tmp1=slope1*(spmax(1,1)-spmax(2,1))+spmax(2,2); if tmp1>spmax(1,2) spmax(1,2)=tmp1; end slope2=(spmax(kk-1,2)-spmax(kk-2,2))/(spmax(kk-1,1)-spmax(kk-2,1)); tmp2=slope2*(spmax(kk,1)-spmax(kk-1,1))+spmax(kk-1,2); if tmp2>spmax(kk,2) spmax(kk,2)=tmp2; end else flag=-1; end msize=size(in_data); dsize=max(msize); xsize=dsize/3; xsize2=2*xsize; spmin(1,1) = 1; spmin(1,2) = in_data(1); jj=2; kk=2; while jj<dsize, if ( in_data(jj-1)>=in_data(jj) & in_data(jj)<=in_data(jj+1)) spmin(kk,1) = jj; spmin(kk,2) = in_data (jj); kk = kk+1; end jj=jj+1; end spmin(kk,1)=dsize; spmin(kk,2)=in_data(dsize); if kk>=4 slope1=(spmin(2,2)-spmin(3,2))/(spmin(2,1)-spmin(3,1)); tmp1=slope1*(spmin(1,1)-spmin(2,1))+spmin(2,2); if tmp1<spmin(1,2) spmin(1,2)=tmp1; end slope2=(spmin(kk-1,2)-spmin(kk-2,2))/(spmin(kk-1,1)-spmin(kk-2,1)); tmp2=slope2*(spmin(kk,1)-spmin(kk-1,1))+spmin(kk-1,2); if tmp2<spmin(kk,2) spmin(kk,2)=tmp2; end else flag=-1; end flag=1; end
评论
    相关推荐
    • EEMD和VMD程序.rar
      EEMD在EMD的基础上进行添加高斯白噪声,VMD相对于EEMD时频分解效果更好,有效的抑制了模态混叠和端点效应
    • EEMD程序.zip
      %应该注意的是,由于在eemd.m中,IMF的总数m被指定为log2(N)-1,在某些情况解的线条进行了合并 %因此会比实际分解得到的减少,但在计算周期和表现显著性的时候要将每个模态的周期和显著性计算在内。
    • EMD与EEMD程序.zip
      超宽带生物雷达中呼吸和心跳信号探测用到的EMD和EEMD算法matlab程序,可以学习一下
    • EEMD.rar
      EEMD程序包,实测好用,用于解决EMD的误差问题
    • EEMD程序.zip
      关于管道泄漏泄漏信号的预处理,应用EEMD算法对真实泄漏信号进行仿真。
    • EMD与EEMD程序.zip
      EMD与EEMD程序,经验模态分析程序,亲自检验,很好用
    • emd 和 eemd 的MATLAB源程序
      emd 和 eemd 的MATLAB源程序,供大家参考学习了
    • EEMD总体平均经验模式分解程序
      总体平均经验模式分解程序,可以对一维信号进行有效的按频段分解与重构,用于噪声消除与特征提取。
    • EEMD程序DLL
      集合经验模态分解EEMD的Fortran程序DLL C#调用 测试通过 <summary> EEMD < summary> <param name "lenData">信号长度< param> <param name "indata">信号...
    • SIM800C_MQTT.rar
      使用SIM800C模块,使用MQTT协议,连接中国移动onenet平台,能实现数据的订阅、发布、存储等