时间序列信号处理(三)——局部均值分解LMD的python实现
1、介绍
局部均值分解(LMD)作为近年来出现的一种新的自适应时频分析方法,能够依据信号的自身特点将复杂的多分量调幅调频信号分解为有限个的单分量调幅调频信号之和,进而求取瞬时频率和瞬时幅值并进行组合,从而得到原始信号的完整时频特征。
2、LMD的实现步骤:
- 首先求出局部均值函数
:设信号为x(t),找出其每一个局部极值点
,求出所有的两个相邻局部极值点的均值,记为
;将所有的
在对应极值点时刻进行直线延申,采用滑动平均法对延伸直线进行平滑处理,得到局部均值函数 。
- 计算局部幅值
:
,和第一步一样,得到局部包络函数
。
- 从原始信号中分离出
,得到
。
- 利用
对
进行解调,得到调频函数
,判断
是不是纯调频函数(振幅恒为1),如果不是就重复上述步骤,直到
为纯调频函数;反之直接输出。
- 将所有局部包络函数相乘,得到包络信号
。
- 得到原始信号的第一个PF分量为包络信号和纯调频函数乘积。
- 用原始信号减去PF分量,再继续前面六步,直到不能再分解,得到多个PF分量和一个余量。
3.对比经验模态分解EMD优缺点:
优点:
- 拥有比EMD更少的迭代次数,一定程度上抑制了端点效应;
- 能更好的保留信号的完整性。
缺点:
- 依然存在端点效应;
- 平滑次数较多时,信号会发生提前或滞后现象、在平滑时步长不能最优确定等。
4.python实现
import numpy as np
import matplotlib.pyplot as plt
from PyLMD import LMDdata1 = np.loadtxt('E:/12k1/0HP/outer18.txt')
data = data1[2048*2:2048*3]
print(data)
index = list(range(len(data)))
N = len(data)
print(N)Fs = 12000
Ts = 1.0/Fs
t = np.arange(2048)
k = np.arange(N)
T = N/Fs
frq = k/T
frq1 = frq[range(int(N/2))]lmd = LMD()
PFs, res = lmd.lmd(data)
nPFs = PFs.shape[0]
print(nPFs)plt.figure(figsize=(10, 8))
for i in range(0, 6):plt.subplot(8, 1, 1)plt.plot(data, 'blue')plt.title('outer')plt.subplot(8, 1, i + 2)plt.title('PF%d' % i)plt.plot(PFs[i - 1])# plt.subplot(7, 1, 6)
# plt.title('residue')
# plt.plot(res)
# plt.subplots_adjust(hspace=0.5)
plt.tight_layout()
plt.show()plt.figure(figsize=(10, 8))
for i in range(0, 6):plt.subplot(7, 1, 1)data_f = abs(np.fft.fft(data)) / Ndata_f1 = data_f[range(int(N/2))]plt.title('outer')plt.plot(frq1, data_f1, 'red')plt.subplot(7, 1, i + 2)data_f2 = abs(np.fft.fft(PFs[i])) / Ndata_f3 = data_f2[range(int(N / 2))]plt.title('PF%d' % i)plt.plot(frq1, data_f3, 'red')
# plt.subplot(6, 1, 5)
# plt.title('residue')
# res1 = abs(np.fft.fft(res)) / N
# res2 = res1[range(int(N / 2))]
# plt.plot(frq1, res2)
# plt.subplots_adjust(hspace=0.5)
plt.tight_layout()
plt.show()
经过上述学习发现,均值模态分解虽然优于经验模态分解,但其存在问题也很难解决,个人觉得经验模态分解实用性更高,特别是其改进后的EEMD。
最后希望大家多多支持,有用的话点赞关注哦!
时间序列信号处理(三)——局部均值分解LMD的python实现相关推荐
- 局部均值分解(LMD)详解
项目介绍 局部均值分解(LMD)作为近年来出现的一种新的自适应时频分析方法,能够依据信号的自身特点将复杂的多分量调幅调频信号分解为有限个的单分量调幅调频信号之和,进而求取瞬时频率和瞬时幅值并进行组合, ...
- LMD改进的局部均值分解matlab代码模版
LMD改进的局部均值分解matlab代码模版 ID:9520675130845877比邻星机灵的薯片
- gaf处理一维故障信号_【推荐文章】改进局部均值分解的齿轮箱复合故障特征提取...
<机械传动>2019年 第43卷 第8期 文章编号:1004-2539(2019)08-0130-05 DOI:10.16578/j.issn.1004.2539.2019.08.0 ...
- 经典非局部均值滤波(NLM)算法python实现(2)
经典非局部均值滤波(NLM)算法python实现(三通道图像版本) 单通道图像版本已发布: https://blog.csdn.net/yy0722a/article/details/11392408 ...
- 经典非局部均值滤波(NLM)算法python实现(1)
经典非局部均值滤波(NLM)算法python实现(单通道图像版本) 概述:非局部均值(NL-means)是近年来提出的一项新型的去噪技术.该方法充分利用了图像中的冗余信息,在去噪的同时能最大程度地保持 ...
- 二、信号分解—>局部均值分解(LMD)学习笔记
LMD学习笔记 一.总述 局部均值分解算法(LMD), LMD算法最大的特点就在依据信号本身的特征对信号的自适应 ...
- 鲁棒局部均值分解 (RLMD)附Matlab代码
✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信.
- 线谱法 时钟分量的提取 matlab,LMD局域均值分解的matlab程序及示例
说明:研究LMD局域均值分解有3个月左右,能找到的相关文章也基本上看了一遍,觉得是个很好的方法,号称是EMD经验模态分解的改进版.但是网络上一直没有找到该算法的matlab程序,只见文章说的天花乱坠. ...
- 传统图像去噪方法(三)之非局部均值去噪(NLM)
前面基于邻域像素的滤波方法,基本上只考虑了有限窗口范围内的像素灰度值信息,没有考虑该窗口范围内像素的统计信息如方差,也没有考虑整个图像的像素分布特性,和噪声的先验知识. NLM算法使用自然图像中普遍存 ...
最新文章
- 中科院微生物所高程组招聘助研3名(正式编制)
- 7 centos 设置jvmgc_centos7配置java环境变量
- 设计模式解析学习(一)
- 简评《疯狂的石头》《超人归来 / Superman Returns》《谍中谍 3 / Mission Impossible 3》...
- 计算机应用能力文字录入,2017全国专业技术人员计算机应用能力考试题库-Excel,Word,XP.pdf...
- 一种移动端自适应屏幕的方法
- Informix IDS 11体系操持(918测验)认证指南,第 4 部门: 机能调优(1)
- (Docker实战) 第六篇:建立持续集成环境03
- 商标注册流程与注意事项
- 阿里P9工程师指定面试复习资料
- gethostbyname
- txt文件转为excel文件
- 泛微E9 获取附件内容,泛微Ecology9获取附件范例,Ecology9附件、E9 附件下载及上传集成平台
- Redis入门完整教程:CacheCloud是什么?
- 【每日一题】一起冲击蓝桥杯吧——Day4【蓝桥真题一起练】
- 数织游戏中的程序思维和数织的程序解法
- DragonBoard 高通推出 IoT板 hitting raspberry pi
- 应用签名不一致,该应用可能被篡改的问题
- notify()和notifyAll()有什么区别
- 区块链知识系列 - 区块链大事记
热门文章
- 新概念英语的MP3下载(英音和美音两种版本,分课下载)
- k-means聚类算法的详解和实现
- Can‘t use Subversion command line client:svn不能使用Subversion命令行客户端:svn
- ASP.NET -- WebForm -- .aspx与.aspx.cs文件
- python如何将字符串转换成json的几种办法!
- 光谱共焦位移传感器结构是如何设计的
- vue多张上传图片的组件
- 金蝶EAS,扩展报表,Java数据集代码示例
- Java根据出生日期获取星座
- 英语文章关于计算机的,电脑的英语作文