赞
踩
局部均值分解算法(LMD), LMD算法最大的特点就在依据信号本身的特征对信号的自适应分解能力,产生具有真实物理意义的乘积函数(PF)分量(每个PF分量都是一个纯调频信号和包络信号的乘积,且每个PF分量的瞬时频率具有实际物理意义。),并由此得到能够清晰准确反映出信号能量在空间各尺度上分布规律的时频分布,有利于更加细致的对信号特征进行分析。
与此同时,局部均值分解算法(LMD)相较于模态分解的创始算法经验模态分解算法(EMD)而言,其具备端点效应小、迭代次数少等优势。
找出原函数的局部均值ni,
求出所有相邻的局部极值点的平均值:
将所有的相邻平均值点mi用直线连起来后通过滑动平均法进行平 滑处理得到局部均值函数m11(t)。
求出包络估计值: 将所有相邻两个包络估计值ai用直线连起来后通过滑动平均法进行平滑处理得到包络估计函数a11(t)。
**其余步骤在笔记本上**
EMD:三次样条函数拟合局部极大与极小值形成的上下包络线,然后对上下包络线求平均得到平均包络函数
LMD:不断平滑相邻局部极值点的平均值来获得平均包络函数(局部均值函数)
EMD:不断用原始信号减去平均包络函数(即去掉低频成分),然后判断剩余信号是否满足模态的两个条件的方式得到模态分量的。
LMD:不断用原始信号减去局部均值函数并除以包络估计函数(即对其进行解调),并重复直到包络估计函数近似等于1时,得到纯调频信号,在获得纯调频信号后再进行包络信号与纯调频信号相乘得到PF分量。
EMD:对每个模态进行Hibert变化后,再通过一下公式
求出瞬时幅值与瞬时频率。
LMD:将迭代产生的每个包络估计函数相乘来求得瞬时赋值,而瞬时频率则是由纯调频信号通过
模态混叠和端点效应
在抑制端点效应、减少迭代次数和保留信号完整性都优于EMD
依然存在端点效应、平滑次数较多时,信号会发生提前或滞后现象、在平滑时步长不能最优确定、无快速算法等问题
注:端点效应的产生:EMD和LMD都是对局部极值进行操作,而两端点有可能既不是极大值点也不是极小值点,二者都未对端点进行处理。
- clear;clc;close all;
-
- T = 5000 ;
- t = (1:T)/T;
- fs=1/T;
- freqs = 2*pi*(t-0.5-1/T)/(fs);
- os1=(1+0.5*sin(5*pi*t)).*cos((400*pi*t)+2*cos(10*pi*t));
- os2=4*sin(pi*t.^2).*sin(60*pi*t);
- os=os1+os2;
- x=os;
- % x=awgn(os,10,'measured','dB');
- T=length(x);
- %绘制信号和其频谱图
- figure(1)
- subplot(211)
- plot(t,x)
- title('time');
- subplot(212)
- y2=x;
- L=length(y2);
- NFFT = 2^nextpow2(L); %2的更高次幂的指数
- Y = fft(y2,NFFT)/L;
- f = fs/2*linspace(0,1,NFFT/2);
- plot(f,2*abs(Y(1:NFFT/2)))
- % 局域均值分析
- [pf,a,si,u] = lmd(x);
- line=size(pf,1)
- NN = length(pf(1,:))
- n = linspace(0,1,NN);
- figure('Color',[1 1 1]);
- for i=1:1:line
- subplot(line+1,1,i),plot(t,pf(i,:)),ylabel(sprintf('PF%d',i));xlabel('Time / S');
- end
-
- for i = 1:1:line
- cc(i)=min(min(corrcoef(pf(i,:), x))); %求相关系数
- end
-
- figure
- plot(cc,'-g<','LineWidth',1.5,'MarkerEdgeColor','b','MarkerFaceColor','b','MarkerSize',5);
- set(gca,'XGrid', 'on', 'YGrid', 'on');
- legend('CC');
- xlabel('IMF');
- ylabel('相关系数');
-
- %重构信号
- cg_ev=pf(1,:)+pf(2,:);
- figure;
- plot(t,os,'-b');hold on
- plot(t,cg_ev,'-r');xlabel('t/s');ylabel('幅值');legend('原始信号','重构信号');
-
- %误差信号
- err=os-cg_ev;
- figure;
- plot(t,err);
- legend('误差');
- xlabel('t');
- ylabel('误差');
-
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreWhite.png)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。