类EMD的“信号分解方法”及MATLAB实现(第九篇)——小波包变换(WPT)/小波包分解(WPD)

在上一篇我们讲到了离散小波变换DWT,在建立了小波分解的基本概念后,我们现在转向小波包分解——一种更精细的小波分析方法。小波包分解在多分辨率分析的基础上,提供了一种全面的频率分析工具,这在许多复杂信号处理场合中被证明是极为宝贵的。

一、从小波分解到小波包分解

小波包分解(Wavelet Packet Decomposition,WPD)有时候也叫做小波包变换(Wavelet Packet Transform,WPT),是由Coifman等人在小波变换理论的基础上提出的。

小波包分解是在离散小波变换的基础上进一步发展的。在DWT中,信号被分解为一系列高频和低频组分,但仅仅迭代分解低频部分。相比之下,WPD在每一级分解中同时对高频和低频组分进行迭代分解。这意味着它能够更详细地分析信号的频率内容。小波包具有小波变换的优势,能够获得时域特征信息和频域特征信息,这一优势使小波包变换能够对不稳定的信号进行有效的分解。同时,对于高频信号部分以及低频信号部分,小波包变换都有很好的信号处理效果,并保证时频分辨率相同。此外,小波包变换具有良好的连续性,能够提供关于原始信号更加丰富的特征信息。[1]

他们的结构区别一目了然[2]:

小波分解树状图

小波包分解树状图

与传统的小波分解相比,小波包分解的关键优势在于其对信号的全频带分解能力。传统的DWT忽略了在高频带中的分解,这在某些应用中可能会丢失重要的信号细节。WPD的这种全频带分析能力特别适用于那些信号特征不仅仅局限于低频范围的应用,由于其细粒度的分析特性,小波包分解在各种应用中显示出其独特的优势。它不仅在信号去噪和数据压缩方面提供了改进的性能,而且在生物医学信号处理、语音识别和地震数据分析中,小波包分解也显示出其无可比拟的能力。例如,在处理EEG信号时,小波包分解能够帮助识别更加细微的神经活动模式,这对于疾病诊断和大脑功能研究至关重要。

二、小波包分解的MATLAB代码实现

理论部分没有太多要说的了。直接进入实战环节。

小波包分解的代码在网上也可以找到一些,但是用起来不太趁手也不太直观。

你在网上找到的图分解结果应该大多是一条条并列摆放的。

但是你想要的分解图应该是按照其物理意义树状排列的。

就像这样:

直观好用的小波包分解结果

是的,笔者按照“类EMD”系列的代码的统一风格,进行了小波包分解画图函数的封装。

实现上述一张图的绘制,只需要三行代码就行:

%% 2.绘制WPT分解图
wname = 'db4';    %小波名称
decompositionLevel = 3; %小波分解水平,正整数
reconstructed_signal = pWPT(signal,decompositionLevel,wname);

当然了,signal作为你要分解的数据对象,需要提前导入。

另外,笔者还封装了分解结果的频谱图函数,画图也只需要三行(代码获取见文末):

%% 3.绘制WPT分解图及频谱图
wname = 'db4';    %小波名称
decompositionLevel = 2; %小波分解水平,正整数
reconstructed_signal2 = pWPTandFFT(signal, decompositionLevel, wname,Fs); % 调用函数进行分解和画图

小波包分解及其频谱图

频谱图没有再采用树状结构,否者画出来的图有些繁复了。目前这样原始信号采用树状、频谱图采用两列对照的形式刚刚好。

总结

通过将小波包分解的原理与传统的小波分解方法相对比,我们可以明显看到其在精细度和适用性方面的优势。WPD提供的全面频率分析工具不仅增强了我们对信号的理解,而且在实际应用中扩大了小波理论的边界。随着分解级别的加深,WPD赋予了分析师在时间-频率域内进行更加细致探查的能力,这是在传统的小波分解中所无法实现的。

我将这篇也归到“类EMD”分解方法的分类中了,主要是取其“分解信号以便分析”的相似目的,但是从底层方法和结果形式上,两者都是有较大区别的,故在此特地说明。

获取代码

上边的测试代码和封装函数,包括工具箱都可以在下边链接获取:

小波包分解画图代码 - 工具箱文档 | 工具箱文档

EMD、EEMD、CEEMD、CEEMDAN、ICEEMDAN、VMD以及HHT相关的程序也有,编程不易,感谢支持~

关于EMD、EEMD、CEEMD、VMD和HHT等的相关介绍可以看这里:

Mr.看海:这篇文章能让你明白经验模态分解(EMD)——EMD在MATLAB中的实现方法

Mr.看海:希尔伯特谱、边际谱、包络谱、瞬时频率/幅值/相位——Hilbert分析衍生方法及MATLAB实现

Mr.看海:类EMD的“信号分解方法”及MATLAB实现(第一篇)——EEMD

Mr.看海:类EMD的“信号分解方法”及MATLAB实现(第二篇)——CEEMD

Mr.看海:类EMD的“信号分解方法”及MATLAB实现(第三篇)——CEEMDAN

Mr.看海:类EMD的“信号分解方法”及MATLAB实现(第四篇)——VMD

Mr.看海:类EMD的“信号分解方法”及MATLAB实现(第五篇)——ICEEMDAN

Mr.看海:类EMD的“信号分解方法”及MATLAB实现(第六篇)——LMD

Mr.看海:类EMD的“信号分解方法”及MATLAB实现(第七篇)——EWT

Mr.看海:类EMD的“信号分解方法”及MATLAB实现(第八篇)——离散小波变换DWT(小波分解)

参考

  1. ^彭旭龙. 基于小波包和贝叶斯优化支持向量机的滚动轴承故障诊断研究[D].华东交通大学,2023.DOI:10.27147/d.cnki.ghdju.2022.000608.
  2. ^基于小波包分析和 BP 神经网络的滚动轴承故障诊断研究

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

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

相关文章

uniapp 解决H5跨域的问题

uniapp 解决h5跨域问题 manifest.json manifest.json文件中,点击“源码视图”,在此对象的最后添加以下代码: "h5" : {"devServer" : {"port" : 8080, //端口号"disableHostCheck" : true,"proxy" :…

leetcode刷题日记:100.Same Tree(相同的树)和101.Symmetric Tree(对称二叉树)

100.Same Tree(相同的树) 题目给了我们两棵树要我们判断这两颗树是否相同,我首先想到的就是前序序列与中序序列可以唯一确定一棵树,如果我能分别确定这两棵树的前序序列与中序序列,然后再分别比较它们的前序序列与中序序列就能得到这两棵树是…

算法训练营第十三天 | 239. 滑动窗口最大值、347.前 K 个高频元素

文章目录 对应力扣的题目链接思路分析解决方案 问题一 、239. 滑动窗口最大值 题目链接 : 239. 滑动窗口最大值 - 力扣(LeetCode) 思路分析 : 1、可能首先想到的是暴力破解 ,每一个区间,遍历一遍&#xf…

Harmony OS—UIAbility的使用

概述 UIAbility是一种包含用户界面的应用组件,主要用于和用户进行交互。UIAbility也是系统调度的单元,为应用提供窗口在其中绘制界面。一个应用可以有一个UIAbility,也可以有多个UIAbility,类似于Android 的 Activity&#xff0c…

咖啡机、电热水壶、豆浆机上架亚马逊美国站UL1082认证标准

咖啡机、电热水壶、豆浆机UL1082报告亚马逊美国站,UL1082标准是指室内用的,咖啡机、电热水壶、豆浆机以及滴落式类加热产品的标准。UL标准是美国的检测标准,目前跨境电商亚马逊美国站需要商家提供产品的UL报告,其中UL1082报告就是…

电脑篇——本地串口转TCP,TCP转虚拟串口,网络调试助手,串口调试助手

TCP/UDP工具、串口工具 https://pan.baidu.com/s/1SY03d_RRVhyOZfsPlApmxg?pwd5555 今日有个需求,就是在本机电脑上接了一个串口设备,然后我的QtCreator是在内网远程电脑运行的,我想将串口设备“挂载”到远程电脑上去调试程序,于…

微服务架构——笔记(4)

微服务架构——笔记(4) 基于分布式的微服务架构 本次笔记为 此次项目的记录,便于整理思路,仅供参考,笔者也将会让程序更加完善 内容包括:8001集群构建,负载均衡,服务发现&#xff0…

解决UniAD在高版本CUDA、pytorch下运行遇到的问题

UniADhttps://github.com/OpenDriveLab/UniAD是面向行车规划集感知(目标检测与跟踪)、建图(不是像SLAM那样对环境重建的建图,而是实时全景分割图像里的道路、隔离带等行车需关注的相关物体)、和轨迹规划和占用预测等多任务模块于一体的统一大模型。官网上的安装说明…

Solidity之变量数据存储和作用域

引用类型 引用类型(Reference Type):包括数组(array),结构体(struct)和映射(mapping),这类变量占空间大,赋值时候直接传递地址(类似指针&#xff…

Mysql8与mariadb的安装与常用设置

一、v10服务器mariadb的安装与常用设置 V10服务器默认安装了mariadb数据库。也可使用命令sudo yum install mariadb手动安装或升级默认安装的版本。 1.1 修改数据库密码 systemctl restart mariadb,重启mariadb服务;mysql -u root -p,要求输入密码直接回车&#…

Python 函数定义详解(More on Defining Functions)- 默认参数/位置参数/关键字参数

1.函数的定义和调用方法 1.1函数定义方法 """def 关键字用来定义一个函数。function_name 是函数名,应遵循命名规范。parameter1, parameter2, ... 是函数的参数列表,可以是任意数量和类型的参数。函数体是用缩进(通常为4个…

k8s:kubectl 详解

目录 1 kubectl 2 基本信息查看 2.1 查看 master 节点状态 2.2 查看命名空间 2.3 查看default命名空间的所有资源 2.4 创建命名空间app 2.5 删除命名空间app 2.6 在命名空间kube-public 创建副本控制器(deployment)来启动Pod(nginx-wl…

LaMa 论文复现:Resolution-robust Large Mask Inpainting with Fourier Convolutions

代码:GitHub - andy971022/auto-lama 论文:https://arxiv.org/abs/2109.07161 1 LaMa 论文简介 2 LaMa代码复现 2.1 环境部署 2.1.1 下载源码,创建环境,安装必需库 git clone https://github.com/advimman/lama cd lama con…

Figma转Sketch文件教程,超简单!

相信大家做设计的都多多少少听过一点Figma和Sktech,这2个设计软件是目前市场上很受欢迎的专业UI设计软件,在全球各地都有很多粉丝用户。但是相对来说,Figma与Sketch只支持iOS系统有所不同,Figma是一个在线设计软件,不限…

TikTok shop美国小店适合哪些卖家做?附常见运营问题解答

一、Tiktok shop小店分类 大家都知道,美国小店可以分为5 种: 美国本土个人店: 最灵活,有扶持政策;美国法人企业店:要求高,有扶持政策;美国公司中国人占股店 (ACCU店) : 权重相对低&#xff0c…

Java版本spring cloud + spring boot企业电子招投标系统源代码

项目说明 随着公司的快速发展,企业人员和经营规模不断壮大,公司对内部招采管理的提升提出了更高的要求。在企业里建立一个公平、公开、公正的采购环境,最大限度控制采购成本至关重要。符合国家电子招投标法律法规及相关规范,以及审…

《向经典致敬》第二届粤港澳大湾区著名歌唱家音乐会完美落幕

百年经典 歌坛盛会 “《向经典致敬》第二届粤港澳大湾区著名歌唱家音乐会暨2023福田人才之夜”完美落幕 2023年11月4日,阳光普照,秋意正浓,由中共深圳市福田区委宣传部、深圳市福田区文学艺术界联合会主办,深圳歌唱家协会承办&…

SpringBoot测试类启动web环境

1.坐标修改 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency> 2.测试类测试 说明&#xff1a;SpringBootTest()中的webEnvironment值的说明&#xff1b; 2.1不启…

VMware 虚拟机如何修改虚拟机系统的网卡速率为万兆——筑梦之路

1. 找到虚拟机系统安装目录 比如E:\vmware-system\kali\ 2. 找到vmx文件&#xff0c;用记事本打开 将 ethernet0.virtualDev "e1000" 这行改为 ethernet0.virtualDev "vmxnet3" 后保存&#xff08;注意vmxnet3全为小写&#xff09;&#xff0c;如果没…

Babylonjs学习笔记(九)——第一人称控制器

书接上回&#xff0c;实现第一人称控制器&#xff01;&#xff01;&#xff01; 以下步骤&#xff0c;缺一不可 相机相关设置 camera.applyGravity true; // 应用重力 camera.checkCollisions true; // 开启碰撞检测 const camera new FreeCamera("camera",ne…