资源简介

HHT变换matlab程序。可修改各种参数,采样点数,各种电能质量原始信号均由程序所得,可以信号叠加而来。比如电压跌落,谐波,暂时上升,中断等。例子给出的是 电压暂降。

资源截图

代码片段和文件信息


function [imfortnbits] = emd(varargin)

[xtsdsd2tolMODE_COMPLEXndirsdisplay_siftingsdtsd2trimfknbitNbItMAXITERATIONSFIXEFIXE_HMAXMODESINTERPmask] = init(varargin{:});

if display_sifting
  fig_h = figure;
end


%main loop : requires at least 3 extrema to proceed
while ~stop_EMD(rMODE_COMPLEXndirs) && (k < MAXMODES+1 || MAXMODES == 0) && ~any(mask)

  % current mode
  m = r;

  % mode at previous iteration
  mp = m;

  %computation of mean and stopping criterion
  if FIXE
    [stop_siftmoyenne] = stop_sifting_fixe(tmINTERPMODE_COMPLEXndirs);
  elseif FIXE_H
    stop_count = 0;
    [stop_siftmoyenne] = stop_sifting_fixe_h(tmINTERPstop_countFIXE_HMODE_COMPLEXndirs);
  else
    [stop_siftmoyenne] = stop_sifting(mtsdsd2tolINTERPMODE_COMPLEXndirs);
  end

  % in case the current mode is so small that machine precision can cause
  % spurious extrema to appear
  if (max(abs(m))) < (1e-10)*(max(abs(x)))
    if ~stop_sift
      warning(‘emd:warning‘‘forced stop of EMD : too small amplitude‘)
    else
      disp(‘forced stop of EMD : too small amplitude‘)
    end
    break
  end


  % sifting loop
  while ~stop_sift && nbit
    if(~MODE_COMPLEX && nbit>MAXITERATIONS/5 && mod(nbitfloor(MAXITERATIONS/10))==0 && ~FIXE && nbit > 100)
      disp([‘mode ‘int2str(k)‘ iteration ‘int2str(nbit)])
      if exist(‘s‘‘var‘)
        disp([‘stop parameter mean value : ‘num2str(s)])
      end
      [imiM] = extr(m);
      disp([int2str(sum(m(im) > 0))‘ minima > 0; ‘int2str(sum(m(iM) < 0))‘ maxima < 0.‘])
    end

    %sifting
    m = m - moyenne;

    %computation of mean and stopping criterion
    if FIXE
      [stop_siftmoyenne] = stop_sifting_fixe(tmINTERPMODE_COMPLEXndirs);
    elseif FIXE_H
      [stop_siftmoyennestop_count] = stop_sifting_fixe_h(tmINTERPstop_countFIXE_HMODE_COMPLEXndirs);
    else
      [stop_siftmoyennes] = stop_sifting(mtsdsd2tolINTERPMODE_COMPLEXndirs);
    end

    % display
    if display_sifting && ~MODE_COMPLEX
      NBSYM = 2;
      [indminindmax] = extr(mp);
      [tmintmaxmminmmax] = boundary_conditions(indminindmaxtmpmpNBSYM);
      envminp = interp1(tminmmintINTERP);
      envmaxp = interp1(tmaxmmaxtINTERP);
      envmoyp = (envminp+envmaxp)/2;
      if FIXE || FIXE_H
        display_emd_fixe(tmmprenvminpenvmaxpenvmoypnbitkdisplay_sifting)
      else
        sxp=2*(abs(envmoyp))./(abs(envmaxp-envminp));
        sp = mean(sxp);
        display_emd(tmmprenvminpenvmaxpenvmoypsspsxpsdtsd2tnbitkdisplay_siftingstop_sift)
      end
    end

    mp = m;
    nbit=nbit+1;
    NbIt=NbIt+1;

    if(nbit==(MAXITERATIONS-1) && ~FIXE && nbit > 100)
      if exist(‘s‘‘var‘)
        warning(‘emd:warning‘[‘forced stop of sifting : too many iterations... mode ‘int2str(k)‘. stop parameter mean value : ‘num2str(s)])
      else
        warning(‘emd:warning‘[‘forced stop of sifting : too many iterations... mode ‘int2str(k)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      17417  2013-06-20 09:41  HHT变换matlab程序\emd.m

     文件       1133  2013-06-20 09:41  HHT变换matlab程序\emdyy.m

     文件       1915  2013-06-20 09:41  HHT变换matlab程序\hhspectrum.m

     文件       2292  2013-06-20 09:41  HHT变换matlab程序\IMFeg.asv

     文件       1628  2013-06-20 09:41  HHT变换matlab程序\IMFeg.m

     文件      14397  2013-06-20 09:51  HHT变换matlab程序\input.m

     文件       1942  2013-06-20 09:41  HHT变换matlab程序\toimage.m

     文件    1065984  2013-06-20 09:47  HHT变换matlab程序\河北南网数据-西柏坡1号机.xls

     文件        165  2013-06-20 09:41  HHT变换matlab程序\说明.txt

     目录          0  2013-06-20 09:54  HHT变换matlab程序

----------- ---------  ---------- -----  ----

              1106873                    10


评论

共有 条评论