一维时间序列信号的小波模极大值分解与重建(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等。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JDK1.8新特性1

JDK1.8新特性1 JDK1.8新特性:Lambda表达式:使用:无参数无返回值:单参数无返回值:多参数无返回值:多参数有返回值: 案例:案例1:案例2:案例3: 函数式…

代码随想录训练营Day 42|力扣62.不同路径、63. 不同路径 II

1.不同路径 代码随想录 视频讲解:动态规划中如何初始化很重要!| LeetCode:62.不同路径_哔哩哔哩_bilibili 代码: class Solution { public:int uniquePaths(int m, int n) {// dp[i][j] 表示从起点走到坐标为i,j的地方…

全自动打包封箱机:解析其在产品质量与安全保障方面的作用

在当今快节奏的生产环境中,全自动打包封箱机以其高效、精准的特点,正逐渐成为生产线上的得力助手。它不仅提升了生产效率,更在产品质量与安全保障方面发挥着举足轻重的作用。星派将详细解析全自动打包封箱机在产品质量与安全保障方面的作用。…

css简单介绍

1.css介绍 css指的是层叠样式(Cascadingstyle sheets),是用来给HTML标签添加样式的语言。他可以设置HTML页面中 文字大小,颜色,对齐方式及元素的 宽高, 位置 等样式。 一个完整的网页是由HTML、CSS、Javascript三部分组成。HT…

CLIP--Learning Transferable Visual Models From Natural Language Supervision

参考:CLIP论文笔记--《Learning Transferable Visual Models From Natural Language Supervision》_visual n-grams模型-CSDN博客 openAI,2021,将图片和文字联系在一起,----->得到一个能非常好表达图片和文字的模型主题&#…

网络安全-钓鱼篇-利用cs进行钓鱼

一、环境 自行搭建,kill,Windows10,cs 二、原理 如图所示 三、钓鱼演示 首先第一步:打开System Profiler-分析器功能 选择克隆www.baidu.com页面做钓鱼 之后我们通过包装域名,各种手段让攻击对象访问:h…

Java面试题:Redis1_Redis的使用场景和如何解决Redis缓存穿透问题

Redis使用场景常见问题 缓存 缓存三兄弟(穿透,击穿,雪崩) 双写一致 持久化 数据过期策略 数据淘汰策略 分布式锁 setnx,redisson 消息队列,延迟队列 … 解决Redis缓存穿透问题 缓存穿透问题 请求->redis缓存->mysql数据库 当一个新请求到来时,先会访问redi…

JVM(Java虚拟机)笔记

面试常见: 请你谈谈你对JVM的理解?java8虚拟机和之前的变化更新?什么是OOM,什么是栈溢出StackOverFlowError? 怎么分析?JVM的常用调优参数有哪些?内存快照如何抓取?怎么分析Dump文件?谈谈JVM中,类加载器你的认识…

前端最新面试题(基础模块HTML/CSS/JS篇)

目录 一、HTML、HTTP、WEB综合问题 1 前端需要注意哪些SEO 2 img的title和alt有什么区别 3 HTTP的几种请求方法用途 4 从浏览器地址栏输入url到显示页面的步骤 5 如何进行网站性能优化 6 HTTP状态码及其含义 7 语义化的理解 8 介绍一下你对浏览器内核的理解? 9 html…

【C++】vector常见的使用方式

前言:在上一篇中我们讲到了string类的模拟实现,今天我们将进一步的去学习vector的一些常用的使用方法。 💖 博主CSDN主页:卫卫卫的个人主页 💞 👉 专栏分类:高质量C学习 👈 💯代码仓…

命运方舟台服注册 命运方舟台服怎么注册?不会操作看这里

命运方舟台服注册 命运方舟台服怎么注册?不会操作看这里 命运方舟作为今年备受瞩目的一款MMORPG类型游戏,在上线前的预约数量已经一次又一次创下新高。这款游戏的开发商Smile gate真是给玩家们带来了一款让人眼前一亮的作品。游戏创建在虚幻引擎的基础…

USACO 2019 December Contest, BronzeProblem 2. Where Am I? 题解

这道题目通过例子可以看出查找最长的相同子串&#xff0c;下一个长度如果没有找到相同的子串就是结果&#xff0c;需要写三个循环&#xff0c;第一个循环是是否存在长度为len的相同子串&#xff0c;第二个循环是从左往右截取长度为len的子串&#xff0c;第三个循环的条件是j<…

用esp prog烧录ESP32-C3板踩坑

附ESP32C3的GPIO一览&#xff1a; vscode选择Jtag烧录&#xff0c;终端输出esp_usb_jtag: could not find or open device&#xff1a; D:\Devtools\Espressif\tools\openocd-esp32\v0.12.0-esp32-20230921\openocd-esp32\bin\openocd.exe -f board/esp32s3-builtin.cfgOpen O…

【电路笔记】-带阻滤波器

带阻滤波器 文章目录 带阻滤波器1、概述2、典型带阻滤波器配置3、带阻滤波器示例14、陷波滤波器5、带阻滤波器示例26、总结带阻滤波器也称为陷波滤波器,阻止并拒绝位于其两个截止频率点之间的频率,并传递该范围两侧的所有这些频率。 1、概述 通过将基本 RC 低通滤波器与 RC …

Docker基础命令(三)

同步docker容器中的时间和本地时间一致 背景: 在很多时候, 训练模型的时候, 记录的log日志中标记的时间和实际的时间不一致, 往往是容器时间和本地时间不一致照成的. 方案 场景一: 正在运行的容器&#xff0c;可以宿主机直接执行命令给某个容器同步时间 #方法1 直接在宿主机…

ElasticSearch教程(详解版)

本篇博客将向各位详细介绍elasticsearch&#xff0c;也算是对我最近学完elasticsearch的一个总结&#xff0c;对于如何在Kibana中使用DSL指令&#xff0c;本篇文章不会进行介绍&#xff0c;这里只会介绍在java中如何进行使用&#xff0c;保证你看完之后就会在项目中进行上手&am…

Arduino烧录esp8266

default_encoding: cp936 Assume aggressive ‘core.a’ caching enabled. Note: optional global include file ‘arduino_modified_sketch_764314\Blink.ino.globals.h’ does not exist. Read more at https://arduino-esp8266.readthedocs.io/en/latest/faq/a06-global-bui…

【计划】装修相关感想

计划 Summary 从去年年底开始规划、设计、落实家里的装修&#xff0c;2024年4月正式开始装修&#xff0c;一个人探索和学习了很多知识和概念。 准备把这些东西做一些记录和分享&#xff0c;一方面记录一些装修的流程和中间的小细节便于第二次装修的时候避免&#xff1b;另一方…

Android设备实时监控蓝牙的连接、配对、开关3种状态

一、简介 Android设备&#xff0c;需要实时监控本机蓝牙连接其他蓝牙设备的状态&#xff0c;包含&#xff1a;连接、配对、开关3种状态。本文介绍了2种方法&#xff0c;各有优势&#xff0c;下面来到我的Studio一起瞅瞅吧~ 二、定时器任务 Handler 功能方法 定时器任务 Hand…

写字静不下心?不如试试这些“笨方法”

夏天悄悄热起来啦&#xff5e;有人说&#xff0c;想踏踏实实写一会儿&#xff0c;但又静不下心&#xff0c;耐不住性子&#xff0c;快收下这四个小锦囊&#xff0c;与古人一起笨拙精进吧&#xff01;    1、不论输赢      每次课前&#xff0c;暄桐林曦老师总会强调&am…