当前位置: 首页 > news >正文

一维时间序列信号的改进小波降噪方法(MATLAB R2021B)

目前国内外对于小波分析在降噪方面的方法研究中,主要有小波分解与重构法降噪、小波阈值降噪、小波变换模极大值法降噪等三类方法。

(1)小波分解与重构法降噪

早在1988 年,Mallat提出了多分辨率分析的概念,利用小波分析的多分辨率特性进行分解。小波分解能将含噪信号分解,得到一组小波系数,然后在重构时对噪声所在频带小波系数进行舍弃,从而有效的进行信号的降噪。其文章中也给出了小波分解和重构的快速算法,称为 Mallet 算法。小波分解与重构法降噪是小波分析被应用于降噪领域最为基本的方法,也是后续一些降噪方法的基础。

(2)小波阈值降噪

小波阈值降噪的基本原理是将混合信号进行不同层次的小波分解,在每个层次利用阈值对小波系数进行处理,过滤掉噪声所在频带,然后对信号进行重构,达到降噪的目的。噪声信号一般在高频部分,所以一般对每层的高频系数进行阈值处理。

(3)小波变换模极大值降噪方法

在信号领域,信号的重要信息往往包含在其突变部分和奇异点之中,所以对于信号奇异点的检测研究至关重要。在小波变换的理论中,lip指数直接影响着模极大值和分解尺度之间的关系。通常情况下,若lip指数大于零,则该信号的模极大值随着分解尺度的增大而增大;若lip指数小于零,则该信号的模极大值随着分解分解尺度的增大而减小。通常的实测信号之中,有用信号的lip指数大于零,而噪声的lip指数小于零,这样就能对有用信号和噪声进行区分,在选出有用信号产生的模极大值点之后,利用这些有用的模极大值点对信号进行重建,就可以达到降噪的目的。

鉴于此,提出一种改进小波降噪方法,该方法提供了一种分解层数选择策略,并使用一个新公式来估计噪声阈值,运行环境为MATLAB R2021B。

%---------------------通过计算peak-to-sum ratio来确定分解层数----------------
%变量初始化
Sj = [1:14]; %每层的peak-to-sum值
Tr = 0.5; %稀疏性判定指标,可调超参数
k = 0; %分解层数%循环遍历所有的细节系数
for level = 1 : 1 : 14%分解到第j层时的细节系数向量wj = cell2mat(cD(level)); %分为L(负数)与H(正数)两组wj_L = []; %负系数数组wj_H = []; %正系数数组for index = 1 : 1 : length(wj)if wj(index) <= 0wj_L = cat(1, wj_L, wj(index));elsewj_H = cat(1, wj_H, wj(index));endend%分别用元胞数组记录cD_L{level, 1} = wj_L; cD_H{level, 1} = wj_H; %计算peak-to-sum值,裁定第j的稀疏性maxwj = max(abs(wj)); %第j层最大的细节系数sumwj = sum(abs(wj)); %第j层细节系数绝对值之和Sj(level) = maxwj / sumwj;完整代码:https://mbd.pub/o/bread/mbd-ZpWWm59wend

相关文章:

  • 【记录43】el-table @selection-change 数据回显、条件约束、历史回显清除
  • 【AVL Design Explorer DOE】
  • QT系列教程(5) 模态对话框消息传递
  • C语言入门编程:开启编程之旅的探索与实践
  • dockers安装mysql
  • docker 快速搭建django项目环境(DockerFile)文件基础搭建
  • 408数据结构-图的存储与基本操作 自学知识点整理
  • 自学成才Flutter 弹性布局、线性布局
  • NFT Insider #132:Solana链上NFT销售总额达到55.49亿美元, The Sandbox成立DAO
  • 【并查集】专题练习
  • 复习leetcode第二题:两数相加
  • Pytorch入门需要达到的效果
  • 【教学类-60-01】彩色消划掉01(四个数字,X*Y宫格)
  • Linux - 文件管理高级1
  • 2.4 Docker部署JDK
  • Google 是如何开发 Web 框架的
  • css属性的继承、初识值、计算值、当前值、应用值
  • Git学习与使用心得(1)—— 初始化
  • go append函数以及写入
  • JAVA SE 6 GC调优笔记
  • React Transition Group -- Transition 组件
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • Redux 中间件分析
  • Vue实战(四)登录/注册页的实现
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 力扣(LeetCode)56
  • 前端路由实现-history
  • 实习面试笔记
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • 新年再起“裁员潮”,“钢铁侠”马斯克要一举裁掉SpaceX 600余名员工 ...
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • #Lua:Lua调用C++生成的DLL库
  • #我与Java虚拟机的故事#连载18:JAVA成长之路
  • (2)空速传感器
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (含react-draggable库以及相关BUG如何解决)固定在左上方某盒子内(如按钮)添加可拖动功能,使用react hook语法实现
  • (六)Flink 窗口计算
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (三分钟)速览传统边缘检测算子
  • (十一)图像的罗伯特梯度锐化
  • (转)Scala的“=”符号简介
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • .gitignore文件使用
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .net MySql
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .Net中ListT 泛型转成DataTable、DataSet
  • .NET周刊【7月第4期 2024-07-28】
  • :=
  • @Valid和@NotNull字段校验使用
  • [ 物联网 ]拟合模型解决传感器数据获取中数据与实际值的误差的补偿方法
  • [10] CUDA程序性能的提升 与 流
  • [145] 二叉树的后序遍历 js