时序分解 | Matlab实现LMD局域均值分解

时序分解 | Matlab实现LMD局域均值分解

目录

    • 时序分解 | Matlab实现LMD局域均值分解
      • 效果一览
      • 基本介绍
      • 程序设计
      • 参考资料

效果一览

在这里插入图片描述

基本介绍

时序分解 | Matlab实现LMD局域均值分解 Matlab语言
1.算法新颖小众,用的人很少,包含分解图
2.直接替换数据即可用 适合新手小白 注释清晰~
3.附赠excel测试数据 直接运行main一键出图~

局部均值分解算法(LMD), LMD算法最大的特点就在依据信号本身的特征对信号的自适应分解能力,产生具有真实物理意义的乘积函数(PF)分量(每个PF分量都是一个纯调频信号和包络信号的乘积,且每个PF分量的瞬时频率具有实际物理意义。),并由此得到能够清晰准确反映出信号能量在空间各尺度上分布规律的时频分布,有利于更加细致的对信号特征进行分析。

与此同时,局部均值分解算法(LMD)相较于模态分解的创始算法经验模态分解算法(EMD)而言,其具备端点效应小、迭代次数少等优势。

LMD:不断平滑相邻局部极值点的平均值来获得平均包络函数(局部均值函数)

LMD:不断用原始信号减去局部均值函数并除以包络估计函数(即对其进行解调),并重复直到包络估计函数近似等于1时,得到纯调频信号,在获得纯调频信号后再进行包络信号与纯调频信号相乘得到PF分量。

程序设计

  • 完整源码和数据获取方式资源处下载Matlab实现LMD局域均值分解。
function [PF, residue] = lmd(x)
c = x;
N = length(x);
A = ones(1, N);
PF = [];
aii = 2 * A;

while (1)

  si = c;
  a = 1;
  
   while (1)
    h = si;
    
      maxVec = [];
      minVec = [];
      
   % 寻找最大和最小点
      for i = 2:N-1
         if h(i - 1) < h(i) && h(i) > h(i + 1)
            maxVec = [maxVec i]; 		
         end
         if h(i - 1) > h(i) && h(i) < h(i + 1)
            minVec = [minVec i]; 		
         end
      end
      
   % 检查是否是残差
      if (length(maxVec) + length(minVec)) < 2
         break;
      end
           
  % 处理端点 
      lenmax = length(maxVec);
      lenmin = length(minVec);
      % 左端点
      if h(1) > 0
          if maxVec(1) < minVec(1)
              yleft_max = h(maxVec(1));
              yleft_min = -h(1);
          else
              yleft_max = h(1);
              yleft_min = h(minVec(1));
          end
      else
          if maxVec(1) < minVec(1)
              yleft_max = h(maxVec(1));
              yleft_min = h(1);
          else
              yleft_max = -h(1);
              yleft_min = h(minVec(1));
          end
      end
      % 右端点
      if h(N) > 0
          if maxVec(lenmax) < minVec(lenmin)
             yright_max = h(N);
             yright_min = h(minVec(lenmin));
          else
              yright_max = h(maxVec(lenmax));
              yright_min = -h(N);
          end
      else
          if maxVec(lenmax) < minVec(lenmin)
              yright_max = -h(N);
              yright_min = h(minVec(lenmin));
          else
              yright_max = h(maxVec(lenmax));
              yright_min = h(N);
          end
      end
      % 获取maxVec和minVec的包络,使用spline插值
      maxEnv = spline([1 maxVec N], [yleft_max h(maxVec) yright_max], 1:N);
      minEnv = spline([1 minVec N], [yleft_min h(minVec) yright_min], 1:N);
      
    mm = (maxEnv + minEnv) / 2;
    aa = abs(maxEnv - minEnv) / 2;
    
    mmm = mm;
    aaa = aa;

    preh = h;
    h = h - mmm;
    si = h ./ aaa;
    a = a .* aaa;    
    
aii = aaa;

    B = length(aii);
    C = ones(1, B);
    bb = norm(aii - C);
    if (bb < 1000)
        break;
    end
    
   end
   
  pf = a .* si;
  
  PF = [PF; pf];
  
  bbb = length(maxVec) + length(minVec);
 % 检查是否是残差
      if (length(maxVec) + length(minVec)) < 5
         break;
      end
           
  c = c - pf;

end

参考资料

[1] https://blog.csdn.net/kjm13182345320/article/details/129215161
[2] https://blog.csdn.net/kjm13182345320/article/details/128105718

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/617272.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

iOS 安装cocoapds

注意 CocoaPods安装是基于ruby环境的&#xff0c;所以要安装CocoaPods先要安装Ruby环境&#xff0c;国内不能直接安装&#xff0c;只能通过VPN或淘宝的Ruby镜像来访问。 安装过程 gem sources --remove https://rubygems.org/ ** (注意是两个“-”&#xff0c;否则会移除失败) …

【分立元件】一起读读10/100 Base-T网络变压器规格书

网络变压器亦称为网络隔离变压器或数据泵。广泛应用于太网交换机、路由器、网络机顶盒、智能电视、网络摄像机、网络刻录机、笔记本电脑、无线AP、智能网关等设备,起到信号耦合、高压隔离、阻抗匹配、波形修复、电磁干扰抑制等作用。 下面我们一起读一读网络变压器规格书,来看…

计算机网络实验3:路由器安全防控配置

实验目的和要求 理解标准IP访问控制列表的原理及功能理解CHAP、DHCP配置原理了解家用式无线路由配置方法实验项目内容 标准IP访问控制列表配置 CHAP验证路由器上配置DHCP网络地址转换NAT配置无线路由实现实验环境 1. 硬件&#xff1a;PC机&#xff1b; 2. 软件&#xff1a;W…

CCPD车牌检测识别数据集

CCPD 是一个在开源免费的中国城市车牌识别数据集。 1. 介绍 CCPD (Chinese City Parking Dataset, ECCV)是中国城市车牌数据集&#xff0c;共有两个CCPD2019和CCPD2020 数据集&#xff0c;总数据量约35W左右&#xff0c;可用于车牌检测和识别模型算法开发。 CCPD 发表的论文:…

该从哪些方面提升系统的吞吐量?

更多大厂面试内容可见 -> http://11come.cn 该从哪些方面提升系统的吞吐量&#xff1f; 我们平时自己做的项目一般没有用户量&#xff0c;都是练手项目&#xff0c;所以并不会在吞吐量上做出很多的优化&#xff0c;但是这样的话&#xff0c;又会导致项目和其他人相比并没有…

找不到d3dx9_42.dll无法继续执行代码的原因分析及解决方法

当您在使用电脑过程中遇到提示“缺少d3dx9_42.dll”时&#xff0c;这实际上是操作系统在运行某些应用程序或游戏时遇到的一个常见问题。D3DX9_42.dll是DirectX 9的一部分&#xff0c;DirectX是一组由微软开发的多媒体处理软件组件&#xff0c;广泛用于提升游戏与多媒体程序的性…

【Python项目】高校社团学生会管理系

技术简介&#xff1a;使用Django框架、MYSQL数据库、JS技术、XCode等实现。 系统简介&#xff1a;PYTHON高校社团管理系统的功能需求总体而言可以分为不同的角色&#xff0c;管理员主要包括&#xff1a;社团信息管理、社团活动管理、社团报名管理、留言板、社团会员管理及管理员…

蓝桥杯-网络安全比赛(6) 模拟实验 Metasploit 控制并获取Windows 登录HASH、LM Hash和NTLM Hash密文解析

窃取WINDOWS账号密码 系统环境&#xff1a;主机&#xff08;Windows系统 IP&#xff1a;192.168.126.129)&#xff0c;虚拟机&#xff08;KALI系统 IP&#xff1a;192.168.126.3&#xff09;&#xff0c;两者需要能通过本地网络互通互连。 攻击工具&#xff1a;Metasploit是一…

随形透气钢是解决模具困气问题的新利器

在制造领域&#xff0c;创新的技术不断推动着行业的发展&#xff0c;3D 打印随形透气钢就是这样一种令人兴奋的创新&#xff0c;它为解决模具困气问题提供了前所未有的便捷。 3D打印随形透气钢&#xff0c;顾名思义就是可以根据工件形状来做透气。很多模具镶件由于位置、形状、…

【计算机毕业设计】基于微信小程序校友会系统的实现

由于APP软件在开发以及运营上面所需成本较高&#xff0c;而用户手机需要安装各种APP软件&#xff0c;因此占用用户过多的手机存储空间&#xff0c;导致用户手机运行缓慢&#xff0c;体验度比较差&#xff0c;进而导致用户会卸载非必要的APP&#xff0c;倒逼 管理者必须改变运营…

SSRF服务器端请求伪造

漏洞原理 SSRF挖掘 SSRF具体利用 SSRF具体验证 SSRF防御与绕过 漏洞原理 这个漏洞允许攻击者去利用服务端的功能&#xff0c;来请求其他网络资源 SSRF(Server-Side Request Forgery:服务器端请求伪造) 是指攻击者能够从易受攻击的 Web应用程序发送精心设计的请求的对其他网站…

Unity基础

概述 基础知识 3D教学 数学计算公共类Mathf 练习: 三角函数 练习&#xff1a; Unity中的坐标系 Vector3向量 向量模长和单位向量 向量加减乘除 练习&#xff1a; 向量点乘 向量叉乘 向量插值运算 Quaternion四元数 为何要使用四元数 四元数是什么 四元数常用方法 四元数计算 练…

优化资源利用,用C++内存池点亮编程之路

内存池介绍(Memory Pool): 它是一种内存分配方式&#xff0c;通过预先分配和复用内存块。 在真正使用内存之前&#xff0c;先申请一大块内存备用。当有新的内存需求时&#xff0c;就从内存池中分出一部分内存块&#xff0c; 若内存块不够再继续申请新的内存。如果我们不需要…

OSTE-Web-Log-Analyzer:基于Python的Web服务器日志自动化分析工具

关于OSTE-Web-Log-Analyzer OSTE-Web-Log-Analyzer是一款功能强大的Web服务器日志自动化分析工具&#xff0c;该工具专为安全研究人员设计&#xff0c;能够使用Python Web日志分析工具&#xff08;Python Web Log Analyzer&#xff09;帮助广大研究人员以自动化的形式实现Web服…

【应用浅谈】Odoo的库存计价与产品成本(二)

序言:时间是我们最宝贵的财富,珍惜手上的每个时分 Odoo的库存&#xff08;Stock&#xff09;模块拥有众多功能&#xff0c;其中库存计价是一项非常重要的功能&#xff0c;原生的成本方法分三种&#xff1a;【标准成本】&#xff0c;【平均成本】&#xff0c;【先进先出】&#…

MySQL 身份认证漏洞 CVE-2012-2122

漏洞影响版本 MariaDB versions from 5.1.62, 5.2.12, 5.3.6, 5.5.23 are not.MySQL versions from 5.1.63, 5.5.24, 5.6.6 are not.演示 开启靶场 进入漏洞目录 cd /root/vulhub/mysql/CVE-2012-2122开启漏洞靶场 docker-compose up -d攻击 直接 运行 这个命令 for i i…

验证码生成--kaptcha

验证码生成与点击重新获取验证码 如图所示&#xff0c;本文档仅展示了验证码的生成和刷新显示。 1. 概述 系统通过生成随机验证码图像和文本。 2. 代码分析 2.1. Maven依赖 <dependency><groupId>com.github.penggle</groupId><artifactId>kaptch…

LeetCode - 0088 合并两个有序数组

题目地址&#xff1a;https://leetcode.cn/problems/merge-sorted-array/description/ 引言&#xff1a;话接上回&#xff0c;由于上次面试官着急下班&#xff0c;面试不得不提前终止&#xff0c;这不&#xff0c;他又找我去面试了 面试官&#xff1a;你好&#xff0c;小伙子&a…

(java)websocket服务的两种实现方式

1.基于java注解实现websocket服务器端 1.1需要的类 1.1.1服务终端类 用java注解来监听连接ServerEndpoint、连接成功OnOpen、连接失败OnClose、收到消息等状态OnMessage 1.1.2配置类 把spring中的ServerEndpointExporter对象注入进来 2.1代码示例 2.1.1 maven配置 <…

Docker停止不了

报错信息 意思是&#xff0c;docker.socket可能也会把docker服务启动起来 解决 检查服务状态 systemctl status dockersystemctl is-enabled docker停止docker.socket systemctl stop docker.socket停止docker systemctl stop docker知识扩展 安装了docker后&#xff0c;…