• 大小: 1KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-03
  • 语言: Matlab
  • 标签: MATLAB  lmd  算法  

资源简介

这个是ldm比较好的资源,很有用,实测可用,可以根据自己的情况更改

资源截图

代码片段和文件信息


clc;
clear all;


%x=X097_DE_time(1:6000);
t=0:0.001:1-0.001;
x=2+cos(3*t).*cos(2*t+2*t.*t)+0.2*randn(1length(t));


%x=(1+0.5*cos(9*pi*t)).*cos(200*pi*t+2*cos(10*pi*t))+3*cos(20*pi*t.*t+6*pi*t);
c = x;
N = length(x);

A = ones(1N);
PF = [];
aii = 2*A;

while(1)

  si = c;
  a = 1;
  
   while(1)
    h = si;
      maxV = [];
      minV= [];
   % 找出所有的极大值和极小值点
      for i = 2: N - 1
         if h (i - 1) < h (i) & h (i) > h (i + 1)
            maxV= [maxV i]; 
         end
         if h (i - 1) > h (i) & h (i) < h (i + 1)
            minV = [minV i]; 
         end         
      end
   % 检查是不是余量
      if (length (maxV) + length (minV)) < 2
         break;
      end
  % 端点的处理
      lenmax=length(maxV);
      lenmin=length(minV);
      %左端点
      if h(1)>0
          if(maxV(1)              yleft_max=h(maxV(1));
              yleft_min=-h(1);
          else
              yleft_max=h(1);
              yleft_min=h(minV(1));
          end
      else
          if (maxV(1)              yleft_max=h(maxV(1));
              yleft_min=h(1);
          else
              yleft_max=-h(1);
              yleft_min=h(minV(1));
          end
      end
      %右端点
      if h(N)>0
          if(maxV(lenmax)             yright_max=h(N);
             yright_min=h(minV(lenmin));
          else
              yright_max=h(maxV(lenmax));
              yright_min=-h(N);
          end
      else
          if(maxV(lenmax)              yright_max=-h(N);
              yright_min=h(minV(lenmin));
          else
              yright_max=h(maxV(lenmax));
              yright_min=h(N);
          end
      end
      %得到极大值点和极小值点的包络,采用的是样条差值进行拟合
      maxE=spline([1 maxV N][yleft_max h(maxV) yright_max]1:N);
      minE=spline([1 minV N][yleft_min h(minV) yright_min]1:N);
    mm = (maxE + minE)/2;
    aa = abs(maxE - minE)/2;
    h = h-mm;
    si = h./aa;
    a = a.*aa;    
    ai = aa;
    B = length(ai);
    C = ones(1B);
    bb = norm(ai-C);
    if(bb < 1000)
        break;
    end     
   end 
   pf = a.*si;
   PF = [PF; pf];
   bbb = length (maxV) + length (minV);
 % 检查是不是余量
      if (length (maxV) + length (minV)) < 20
         break;
      end 
  c = c-pf;
end
line=size(PF1); 
NN = length(PF(1:));
n = linspace(01NN);
figure(1);
subplot(line+211)plot(nx)ylabel(‘X(t)‘);
subplot(line+212)plot(nPF(1:))ylabel(‘PF_1(t)‘);
subplot(line+213)plot(nPF(2:))ylabel(‘PF_2(t)‘);
subplot(line+214)plot(nPF(3:))ylabel(‘PF_3(t)‘);
subplot(line+215)plot(nc)ylabel(‘u(t)‘);
%subplot(line+216)plot(nPF(5:))ylabel(‘PF_5(t)‘);
%subplot(line+217)plot(nc)ylabel(‘u(t)‘);
%subplot(line+118)plot(nPF(7:)*1000)ylabel(‘PF_7(t)‘);
%subplot(line+119)plot(nPF(8:)*1000)ylabel(‘PF_8(t)‘);
%subplot(line+1110)plot(nPF(9:)*1000)ylabel(‘PF_9(t)‘);





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

     文件       3034  2015-04-18 16:02  LMD1.m

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

                 3034                    1


评论

共有 条评论