一维时间序列信号的小波模极大值分解与重建(matlab R2018A)
数学上称无限次可导函数是光滑的或没有奇异性,若函数在某处有间断或某阶导数不连续,则称函数在此处有奇异性,该点就是奇异点。奇异性反映了信号的不规则程度,因为信号的奇异点和突变部分往往携带者重要信息,因此信号的奇异性检测非常有必要。信号的奇异性由Lipschitz指数来描述和衡量。
通常情况下,信号的奇异性可分为两种情况:一种是信号在某一时刻,其幅值发生突变,引起信号的不连续性,另一种是信号外观上光滑,其幅值没有突变,但是在信号的一阶微分上有突变产生。Fourier变换是研究函数奇异性的基本工具,但它只能确定信号是否具有奇异性和奇异性的强弱,而不能确定奇异点的分布情况及奇异点的位置。由于小波变换理论在时域和频域良好的局部化或近似局部化性质,因此小波变换作为检测信号奇异性的工具,较好地解决了信号奇异检测的问题。
当小波函数可看做某一平滑函数的一阶导数时,信号小波变换模的局部极值点对应于信号的突变点(或边缘),因此,采用检测小波变换系数模的过零点和局部极值点的方法可以检测信号的突变点。
鉴于此,采用小波模极大值分解与重建对一维时间序列信号进行处理,运行环境为matlab R2018A,主运行代码如下:
%% 小波模极大值重构是采用的交替投影法
close all;
points = 1024; % 所处理数据的长度
level = 6; % 分解的级数
sr = 360; % 抽样率, P gama投影要用的
num_inter = 6; % 迭代次数
wf='db3'; % 小波名称
[Lo_D,Hi_D,Lo_R,Hi_R] = wfilters(wf);% 得到小波变换要用的滤波器
%ecgdata = load('ecg.txt'); %需要分析的信号
%signal = ecgdata(1:points,3)';% 取第3列,不懂可以打开ecg.txt看一下% 这个信号是可以换的,做过一个信号文件就可以。
%signal = signal * 300; % 乘以300,数据大一点显示出来漂亮一点,不为什么
%调用wave_peak进行小波变换,计算小波分解系数和模极大序列
signal = signal_fig1;
[swa,swd,ddw,wpeak] = wave_peak(signal,level,Lo_D,Hi_D);
% signal: 原始信号; swa:小波概貌; swd:小波细节;
% ddw: 局部极大位置; wpeak:小波变换的局部极大序列]
% 作图:左列为各层的概略信号,右列为各层的细节信号(即小波变换)
figure;
subplot(level,1,1); plot(real(signal)); grid on;axis tight;
title('original signal(Upper)、wavelet transform (Lower left)and modulus maxima(Lower right)');
for i=1:level%概略信号subplot(level+1,3,3*(i)+1);plot(swa(i,:)); axis tight; grid on; xlabel('time');ylabel(strcat('a ',num2str(i)));%小波变换subplot(level+1,3,3*(i)+2);plot(swd(i,:)); axis tight;grid on;ylabel(strcat('d ',num2str(i)));%模极大值subplot(level+1,3,3*(i)+3);plot(wpeak(i,:)); axis tight;grid on;ylabel(strcat('j= ',num2str(i)));
endpswa = swa(level,:); % pswa: 第level层的概略信号仍然保留为重构用
wframe = (wpeak~=0); % wframe 中的1标明wpeak非零的位置,即模极大值的位置
%迭代初始化
w0=zeros(1,points); % 重构信号初始值设为0
[a,d]=swt(w0,level,Lo_D,Hi_D); % 做一次稳定小波变换,结果在a和d里面,层数level不变
w2=d; % w2为待重建小波,上一行和这一行好像可以省去for j=1:num_inter % 循环重构,d -> w2 -> w0 -> d -> w2 -> w0 -> dw2=Py_Pgama(d,wpeak,wframe,1,sr); % 先进行Py投影和 Pgama投影w0=iswt(pswa,w2,Lo_R,Hi_R); % 再进行Pv投影(小波逆变换)[a,d]=swt(w0,level,Lo_D,Hi_D); % Pvend
% 最后通过w2做逆小波变换得到重构信号:
pswa = iswt(swa(level,:),w2,Lo_R,Hi_R); % 计算重建信号% 原信号和由模极大重建信号的比较
figure,
subplot(211);
plot(pswa(1:points)); % 重构信号描图
title('The comparation between original signal (Upper) and reconstructed signal (Lower)');
subplot(212);
plot(signal(1:points),'r'); % 原始信号描图%分别计算重建小波以及原信号的信噪比
werr = w2 - swd; % 原信号的小波变换的细节部分和重构信号的细节部分的误差,即
% 原信号的小波变换(swd)和重建后的小波变换(w2)的比较
figure,
wsnr = zeros(level,1); % 存储每一层的信噪比
for m=1:level % norm为2范数,即均方值wsnr(m) = 20*log10(norm(swd(m,:))/norm(werr(m,:)));subplot(level,1,m);plot(swd(m,:)),hold on,%红色的重构小波变换覆盖在原图上plot(w2(m,:),'r');grid on;ylabel(strcat('j=',num2str(m))),axis tight;if(m==1)title('The wavelet transform of original signal (blue) and the wavelet transform of reconstructed signal (red)');end
endwsnr % 小波域计算出的各层的信噪比
err = pswa(1:points)-signal(1:points); % 时域的误差信号
mse = mean(err.^2) % 均方误差
smse = mean(signal.^2); % 信号的均方值
%完整代码:https://mbd.pub/o/bread/mbd-ZZeTmZ5u
snr = 10*log10(smse/mse) % 时域中计算的信噪比(dB值)



工学博士,担任《Mechanical System and Signal Processing》《中国电机工程学报》《控制与决策》等期刊审稿专家,擅长领域:现代信号处理,机器学习,深度学习,数字孪生,时间序列分析,设备缺陷检测、设备异常检测、设备智能故障诊断与健康管理PHM等。
相关文章:
一维时间序列信号的小波模极大值分解与重建(matlab R2018A)
数学上称无限次可导函数是光滑的或没有奇异性,若函数在某处有间断或某阶导数不连续,则称函数在此处有奇异性,该点就是奇异点。奇异性反映了信号的不规则程度,因为信号的奇异点和突变部分往往携带者重要信息,因此信号的…...
五分钟“手撕”栈
实现代码放开头,供大家学习与查阅 目录 一、实现代码 二、什么是栈 三、栈的常见操作 底层实现是链表。 入栈 出栈 四、Stack的使用 五、栈的习题 第一题 第二题 第三题 第四题 第五题 第六题 第七题 六、栈、虚拟机栈、栈帧的区别 目录 一、…...
MAC也能玩转3A大作 Crossover使用指南 crossover运行战地5
众所周知,在Mac上你本不该玩游戏。但是如果你实在犯了这个瘾了,你可以使用Parallel Desktop来运行所有Windows程序。但是繁重的虚拟机对磁盘容量提出了较高的要求,(可能虚拟机用了大概半年就会到60-80GB这样的大小)&am…...
docker私有镜像仓库的搭建及认证
简介: docker私有镜像仓库的搭建及认证 前言 在生产上使用的 Docker 镜像可能包含我们的代码、配置信息等,不想被外部人员获取,只允许内 网的开发人员下载。 Docker 官方提供了一个叫做 registry 的镜像用于搭建本地私有仓库使用。在内部网…...
simCSE句子向量表示(1)-使用transformers API
SimCSE SimCSE: Simple Contrastive Learning of Sentence Embeddings. Gao, T., Yao, X., & Chen, D. (2021). SimCSE: Simple Contrastive Learning of Sentence Embeddings. arXiv preprint arXiv:2104.08821. 1、huggingface官网下载模型 官网手动下载:pri…...
网络运维的重要性
一、介绍 网络运维,英文名为Network Operations (NetOps),指的是负责维护和管理企业或组织内部网络设备和系统的团队或个人。网络运维的主要目标是确保网络的稳定运行和高效性能,以满足企业或组织的需求。 网络运维工作涵盖了多个方面&…...
还不会使用多线程优化代码执行效率?codefun教你在业务场景中使用CompletableFuture进行优化!
业务场景 我们先来从场景入手,具体的业务是这样的:我们需要从某的省的id去查询这个省份所有的县区,至于什么是县区呢?在DB中我们是这样定义的,也就是字段level 3 的时候,就代表一个县的信息,然后呢&#…...
数据结构-堆(带图)详解
前言 本篇博客我们来仔细说一下二叉树顺序存储的堆的结构,我们来看看堆到底如何实现,以及所谓的堆排序到底是什么 💓 个人主页:普通young man-CSDN博客 ⏩ 文章专栏:数据结构_普通young man的博客-CSDN博客 若有问题 评…...
React Native 之 react-native-share(分享)库 (二十三)
react-native-share 是一个流行的 React Native库,它允许你在移动应用中分享文本、链接、图片等内容到各种社交网络和消息应用。以下是对其原理的简要概述以及代码示例的解析。 代码示例解析 1. 安装 npm install react-native-share # 或者 yarn add react-n…...
JCR一区级 | Matlab实现TCN-BiGRU-MATT时间卷积双向门控循环单元多特征分类预测
JCR一区级 | Matlab实现TCN-BiGRU-MATT时间卷积双向门控循环单元多特征分类预测 目录 JCR一区级 | Matlab实现TCN-BiGRU-MATT时间卷积双向门控循环单元多特征分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.Matlab实现TCN-BiGRU-MATT时间卷积双向门控循环单元多…...
游戏心理学Day01
心理学 心理学是一门研究心理过程和行为及其如何受有机体的生理,心理状态和外部影响的科学 心理学不是常识的代名词,心理学分为基础,心理学和应用心理学基础,心理学研究的目的在于描述,解释,预测和控制行…...
错误模块路径: ...\v4.0.30319\clr.dll,v4.0.30319 .NET 运行时中出现内部错误,进程终止,退出代码为 80131506。
全网唯一解决此BUG的文章!!! 你是否碰到了以下几种问题?先说原因解决思路具体操作1、首先将你C:\Windows\Microsoft.NET\文件夹的所有者修改为你当前用户,我的是administrator。2、修改当前用户权限。3、重启电脑4、删…...
005 CentOS 7.9 RabbitMQ安装及配置
https://github.com/rabbitmq/rabbitmq-server/releases https://www.rabbitmq.com/docs/download https://packagecloud.io/rabbitmq/rabbitmq-server https://www.erlang-solutions.com/downloads/ https://www.erlang.org/ 文章目录 卸载erlerl版本安装与下载版本不匹配正…...
Xcode 15 libarclite 缺失问题
升级到Xcode 15运行项目报错,报错信息如下: SDK does not contain libarclite at the path /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphonesimulator.a; try increasing the minimum d…...
绘画智能体分享
这是您请求的故宫雪景图,角落有一只可爱的胖猫,采用了水墨画风格,类似于张大千的作品。希望您喜欢这幅画! 🎨 选项 1【转变风格】——将这幅画转变为梵高的后印象派风格,增添一些梵高特有的笔触和色彩。 &…...
7_2、C++程序设计进阶:数据共享
数据与函数 数据与函数局部变量全局变量类的数据成员 类的静态成员静态数据成员静态函数成员 友元友元函数友元类 函数之间实现数据共享有以下几种方式:局部变量、全局变量、类的数据成员、类的静态成员和友元。 如何共享局部变量呢? 在主调函数和被调…...
d2-crud-plus 使用小技巧(五)—— 搜索时间(或下拉列表)后,点击X清除按钮后返回值为null,导致异常
问题 使用vue2elementUId2-crud-plus,时间组件自动清除按钮,点击清除按钮后对应的值被设置为null,原本应该是空数组([]),导致数据传到后端后报错。不仅适用于搜索,表单一样有效果。 解决方法 …...
ChatGPT成知名度最高生成式AI产品,使用频率却不高
5月29日,牛津大学、路透社新闻研究所联合发布了一份生成式AI(AIGC)调查报告。 在今年3月28日—4月30日对美国、英国、法国、日本、丹麦和阿根廷的大约12,217人进行了调查,深度调研他们对生成式AI产品的应用情况。 结果显示&…...
R19 NR移动性增强概况
随着5G/5G-A技术不断发展和业务需求的持续增强,未来网络的部署将不断向高频演进。高频小区的覆盖范围小,用户将面临更为频繁的小区选择、重选、切换等移动性过程。 为了提升网络移动性能和保障用户体验,移动性增强一直是3GPP的热点课题。从NR…...
C语言:如何写文档注释、内嵌注释、行块注释?
技术答疑流程 扫描二维码,添加个人微信;支付一半费用,获取答案;如果满意,则支付另一半费用; 知识点费用:10元 项目费用:如果有项目任务外包需求,可以微信私聊...
Gpmall分布式事务处理:订单创建与库存扣减的最终一致性保障
Gpmall分布式事务处理:订单创建与库存扣减的最终一致性保障 【免费下载链接】gpmall 项目地址: https://gitcode.com/gh_mirrors/gp/gpmall 在电商系统中,订单创建与库存扣减的分布式事务处理是确保数据一致性的核心挑战。Gpmall项目通过创新的P…...
告别黑盒调试:为VS2022和Halcon HImage定制一个带暗色主题的视觉化调试器
为VS2022和Halcon HImage打造沉浸式暗色调试器:从UI优化到高效开发实践 在计算机视觉开发领域,Halcon凭借其强大的图像处理能力成为工业检测、医疗影像等场景的首选工具。然而,长时间面对传统调试界面容易导致视觉疲劳,影响开发效…...
深入解析Cache工作原理与多核一致性机制
深入理解Cache工作原理与技术实现1. 计算机体系中的Cache基础1.1 Cache存在的必要性现代计算机系统中,处理器性能与存储器访问性能之间存在显著差距。从历史发展数据来看,CPU计算性能每18个月翻一番(遵循摩尔定律),而D…...
技术指标——格雷厄姆指数
文章目录1. 格雷厄姆指数是什么?2. 格雷厄姆指数的作用是什么?3. 举例计算例1:牛市顶部(2021年2月)例2:熊市底部(2024年2月)例3:中性水平(假设某一般时刻&…...
DSP28335串口调试:从printf重定向到稳定数据输出的实战解析
1. 为什么需要printf重定向? 在DSP28335开发过程中,printf函数是我们最常用的调试工具之一。想象一下,当你需要实时查看算法运行状态、变量数值或者系统日志时,如果每次都要停下来用调试器查看,那效率得多低啊…...
Linux initramfs深度解析: 从内核启动到根文件系统的桥梁(3)
接前一篇文章:Linux initramfs深度解析: 从内核启动到根文件系统的桥梁(2) 设计思想与架构 1. 为什么需要initramfs 在initramfs出现之前,系统启动有一个根本性的问题:内核需要访问根文件系统来加载驱动程序…...
深入解析NAND Flash基础操作与系统集成——从阵列结构到多Die协同
1. NAND Flash基础结构与工作原理 NAND Flash存储器是现代存储系统的核心组件,从U盘到企业级SSD都依赖这项技术。要理解它的强大之处,得先从它的物理结构说起——想象一个巨大的立体停车场,每个停车位就是一个存储单元,而控制电路…...
【大模型工程实践③】RAG 基础架构与完整实现
【大模型工程实践③】RAG 基础架构与完整实现:从0到1跑通 作者:AI学习者 | 来源:大模型工程实践学习系列 | 更新:2026年3月 【理论要点速览】 学习本篇前,建议先掌握以下核心理论(点击跳转): ① 为什么需要RAG? ② RAG vs Fine-tuning vs Long Context的决策框架 ③ …...
R语言新手必看:如何用pkgbuild和Sys.which检查并安装Rtools(附绑定教程)
R语言开发环境配置全指南:从Rtools安装到编译环境搭建 刚接触R语言的开发者,在尝试从源代码编译安装某些扩展包时,常常会遇到"make not found"之类的错误提示。这通常意味着系统缺少必要的编译工具链。本文将详细介绍如何在Windows…...
微信小程序--动态切换登录注册标签页
1、try.js的 1.1、data函数 添加 activeTab: login, // 当前激活的标签,默认为登录 1.2、添加一个函数 // 切换登录/注册标签switchTab(e) {const tab e.currentTarget.dataset.tab;this.setData({activeTab: tab});}, 2、try.wxml的代码 <!--pages/try/…...
