小波阈值去噪原理及实现

2023-10-27

1.小波阈值去噪的基本原理

将信号通过小波变换(采用Mallat算法)后,信号产生的小波系数含有信号的重要信息,将信号经小波分解后小波系数较大,噪声的小波系数较小,并且噪声的小波系数要小于信号的小波系数,通过选取一个合适的阀值,大于阀值的小波系数被认为是有信号产生的,应予以保留,小于阀值的则认为是噪声产生的,置为零从而达到去噪的目的。
其实质为抑制信号中无用的部分、增强有用部分。
其基本步骤为:
(1)分解:选定一种层数为N的小波对信号进行小波分解;
(2)阀值处理过程:分解后通过选取一合适的阀值,用阀值函数对各层系数进行量化;
(3)重构:用处理后的系数重构信号。

在这里插入图片描述
在这里插入图片描述
小波分解:X->ca3,cd3,cd2,cd1;小波重构:ca3,cd3,cd2,cd1->X。其中ca为低频信息、近似分量,cd为高频、细节分量。

2.小波阈值去噪需要考虑的问题

小波阀值去噪的基本问题包括三个方面:小波基的选择,阀值的选择,阀值函数的选择。
(1)小波基的选择:通常我们希望所选取的小波满足以下条件:正交性、高消失矩、紧支性、对称性或反对称性。但事实上具有上述性质的小波是不可能存在的,因为小波是对称或反对称的只有Haar小波,并且高消失矩与紧支性是一对矛盾,所以在应用的时候一般选取具有紧支的小波以及根据信号的特征来选取较为合适的小波。
(2)阀值的选择:直接影响去噪效果的一个重要因素就是阀值的选取,不同的阀值选取将有不同的去噪效果。目前主要有通用阀值(VisuShrink)、SureShrink阀值、Minimax阀值、BayesShrink阀值等。
(3)阀值函数的选择:阀值函数是修正小波系数的规则,不同的反之函数体现了不同的处理小波系数的策略。最常用的阀值函数有两种:一种是硬阀值函数,另一种是软阀值函数。还有一种介于软、硬阀值函数之间的Garrote函数。

另外,对于去噪效果好坏的评价,常用信号的信噪比(SNR)与估计信号同原始信号的均方根误差(RMSE)来判断。

3.小波阈值的实现

clear
clc
t1=clock;
 %% 载入噪声信号数据,数据为.mat格式,并且和程序放置在同一个文件夹下
load('lng.mat');%matrix
YSJ= lng;
 %% 数据预处理,数据可能是存储在矩阵或者是EXCEL中的二维数据,衔接为一维的,如果数据是一维数据,此步骤也不会影响数据
[c,l]=size(YSJ);
Y=[];
for i=1:c
    Y=[Y,YSJ(i,:)];
end
[c1,l1]=size(Y);
X=[1:l1];
 %% 绘制噪声信号图像
figure(1);
plot(X,Y);
xlabel('横坐标');
ylabel('纵坐标');
title('原始信号');
 %% 硬阈值处理
lev=3;
xd=wden(Y,'heursure','h','one',lev,'db4');%硬阈值去噪处理后的信号序列
figure(2)
plot(X,xd)
xlabel('横坐标');
ylabel('纵坐标');
title('硬阈值去噪处理')
set(gcf,'Color',[1 1 1])
 %% 软阈值处理
lev=3;
xs=wden(Y,'heursure','s','one',lev,'db4');%软阈值去噪处理后的信号序列
figure(3)
plot(X,xs)
xlabel('横坐标');
ylabel('纵坐标');
title('软阈值去噪处理')
set(gcf,'Color',[1 1 1])
%% 固定阈值后的去噪处理
lev=3;
xz=wden(Y,'sqtwolog','s','sln',lev,'db4');%固定阈值去噪处理后的信号序列
figure(4)
plot(X,xz);
xlabel('横坐标');
ylabel('纵坐标');
title('固定阈值后的去噪处理')
set(gcf,'Color',[1 1 1])
%% 计算信噪比SNR
Psig=sum(Y*Y')/l1;
Pnoi1=sum((Y-xd)*(Y-xd)')/l1;
Pnoi2=sum((Y-xs)*(Y-xs)')/l1;
Pnoi3=sum((Y-xz)*(Y-xz)')/l1;
SNR1=10*log10(Psig/Pnoi1);
SNR2=10*log10(Psig/Pnoi2);
SNR3=10*log10(Psig/Pnoi3);
%% 计算均方根误差RMSE
RMSE1=sqrt(Pnoi1);
RMSE2=sqrt(Pnoi2);
RMSE3=sqrt(Pnoi3);
%% 输出结果
disp('-------------三种阈值设定方式的降噪处理结果---------------'); 
disp(['硬阈值去噪处理的SNR=',num2str(SNR1),',RMSE=',num2str(RMSE1)]);
disp(['软阈值去噪处理的SNR=',num2str(SNR2),',RMSE=',num2str(RMSE2)]);
disp(['固定阈值后的去噪处理SNR=',num2str(SNR3),',RMSE=',num2str(RMSE3)]);
t2=clock;
tim=etime(t2,t1);
disp(['------------------运行耗时',num2str(tim),'秒-------------------'])

运行结果展示:

-------------三种阈值设定方式的降噪处理结果---------------
硬阈值去噪处理的SNR=99.4101,RMSE=0.0012581
软阈值去噪处理的SNR=99.4101,RMSE=0.0012581
固定阈值后的去噪处理SNR=102.9891,RMSE=0.00083323
------------------运行耗时1.806秒-------------------
>> 

在这里插入图片描述

参考:
https://blog.csdn.net/u011776903/article/details/72900438
https://blog.csdn.net/JK198310/article/details/85204396
https://zhuanlan.zhihu.com/p/92345422
https://blog.csdn.net/weixin_45317919/article/details/109295551
https://blog.csdn.net/qq_45955094/article/details/104844614

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

小波阈值去噪原理及实现 的相关文章

  • MATLAB中如何画水平线和垂直线?

    我目前正在尝试在 MATLAB 中绘制简单的垂直线和水平线 例如 我想绘制线 y 245 我该怎么做呢 MATLAB 根据您提供的向量逐点进行绘图 因此 要创建一条水平线 您需要改变x同时保持y对于垂直线恒定 反之亦然 xh 0 10 yh
  • 按元素出现的频率对数组元素进行排序

    是否可以在 matlab octave 中使用sort函数根据元素的相对频率对数组进行排序 例如数组 m 4 4 4 10 10 10 4 4 5 应该产生这个数组 5 10 10 10 4 4 4 4 4 5是出现频率较低的元素 位于顶部
  • Matlab Mex文件编译

    我正在尝试编译一个 mex 文件以在 matlab 中使用套接字连接 问题是它总是说我没有安装sdk或编译器 但我已经安装了 Visual Studio 2010 Express Visual Studio 2012 Express Vis
  • MATLAB 中的多个捕获组

    我有一个包含数字或字母的字符串a 可能紧随其后的是r or l 在 MATLAB 中 以下正则表达式返回为 gt gt regexp 10r 0 9 a l r match ans 10r 我希望10 and r分开 因为我有两个捕获组 有
  • 使用mat2cell将MxN的矩阵划分为1xN大小的M矩阵

    我有一个大小为 MxN 的矩阵 比方说 1867x3 1867 行和 3 列 我想将其分成 1867 个大小为 1x3 的单元格 我使用了mat2cell X 1 1866 这里X是矩阵 1867x3 结果给出了两个单元格 一个单元格的大小
  • 句柄类和值类的区别

    我有一些 C 背景 想使用 Matlab 中的类 句柄和值类有什么区别 我知道如果我想定义一个带有重载运算符 例如 和 的矩阵类 我会使用值类 然而 有时 当我选择一个手柄类时 事情似乎只对我有用 MathWorks 提供了一些有关其用途的
  • 如何在 Matlab 中对数组应用低通或高通滤波器?

    有没有一种简单的方法可以将低通或高通滤波器应用于 MATLAB 中的数组 我对 MATLAB 的强大功能 或数学的复杂性 有点不知所措 需要一个简单的函数或一些指导 因为我无法从文档或网络搜索中找到答案 看着那 这filter http w
  • Matlab没有优化以下内容吗?

    我有一个很长的向量 1xrv 和一个很长的向量w1xs 和一个矩阵Arxs 它是稀疏的 但维度非常大 我期望 Matlab 对以下内容进行优化 这样我就不会遇到内存问题 A v w 但看起来 Matlab 实际上是在尝试生成完整的v w矩阵
  • MATLAB 教程中的 SIFT 实现

    我正在寻找 MATLAB 中的一些基本 SIFT 实现 我需要从第一原则来写它 另外 我正在寻找一些可以解释程序中发生的事情的内容 Vedali 的代码和 David Lowe 的代码超出了我的理解范围 如果您是 Matlab 用户 您一定
  • MATLAB:具有复数的 printmat

    我想使用 MATLAB 的printmat显示带有标签的矩阵 但这不适用于复数 N 5 x rand N 1 y rand N 1 z x 1i y printmat x y z fftdemo N 1 2 3 4 5 x y x iy O
  • 在 Matlab 中将 datenum 转换为 datetime 的最快方法

    我在 Matlab 中将 datenum 转换为 datetime 时遇到问题 Given dnum floor now floor now 1 我尝试了以下方法 datenum dnum 但这没有用 我发现有效的方法是 datetime
  • Matlab:如何更改矩阵的存储方式?从 1x1x3 到 1x3?

    我目前有 val 1 0 7216 val 2 0 7216 val 3 0 7216 但我想要 0 7216 0 716 0 721 我可以做什么样的操作来做到这一点 The reshape函数将在这里解决问题 Arrange the e
  • 括号中的波形符字符

    在 MATLAB 中 以下代码执行什么操作 m func returning matrix 波浪号运算符 的作用是什么 在 Matlab 中 这意味着不要将函数中相应的输出参数分配到赋值的右侧 因此 如果func returning mat
  • matlab中类库的全局变量

    我有一些matlab声明的类 我如何声明所有类中都可见的常量 例如 这些常量可以是在所有类的方法中使用的物理常量 首先想到的是使用全局变量 还有更好的办法吗 最好在单独的文件中声明这些常量 包含常量的类是执行此操作的一种很好的干净方法 请参
  • matlab中的正则逻辑回归代码

    我正在尝试正则化 LR 在 matlab 中使用以下公式很简单 成本函数 J theta 1 m sum y i log h x i 1 y i log 1 h x i lambda 2 m sum theta j 梯度 J theta t
  • 检测植物图片中的所有分支

    我想知道有什么可以检测下图中的所有绿色树枝 目前我开始应用 Frangi 过滤器 options struct FrangiScaleRange 5 5 FrangiScaleRatio 1 FrangiBetaOne 1 FrangiBe
  • 正确使用 fft2 和 fftshift 进行着色形状

    我正在尝试从 Trucco Verri 文本 3d 计算机视觉入门技术 中看到的着色算法重新创建经典形状 但我很难理解 matlab 中的 fft 函数 本质上 我需要使用可积性约束来获取图像的深度 Z 我不确定在这种情况下何时使用 fft
  • MATLAB 类的 Description 和DetailedDescription 属性

    内置 MATLAB 类具有 Description 和 DetailedDescription 属性的值 gt gt handle ans meta class handle Package meta Properties Name han
  • MATLAB:在不使用循环的情况下提取矩阵的多个部分

    我有一个巨大的 2D 矩阵 我想从中提取 15 个不同的 100x100 部分 我有两个向量 x 和 y 其中保存了零件的左上角索引 我用过这样的东西 result cam1 x 1 end x 1 end 99 y 1 end y 1 e
  • 读出 Matlab / Octave fft2() 函数输出的特定点

    我正在熟悉 Octave 及其功能fft2 在此玩具示例中 我的目标是生成以下 256 x 256 png 图像的 2D DFT 为了能够轻松理解输出 我尝试将此图像转换为 256 x 256 图像 消除颜色信息 Im imread cir

随机推荐

  • java 加载驱动3种方法_加载jdbc驱动程序的三种不同方式

    1 比较常用 try Class forName com mysql jdbc Driver 加载数据库驱动 String url jdbc mysql localhost 3306 databasename 数据库连接子协议 databa
  • React:通过嵌套对象循环

    问题描述 我正在从strapi 获取数据 我的导航对象的响应如下所示 简化 id 1 title Home order 1 items id 2 title 3D Assets order 1 items id 4 title 3D Pla
  • Linux下OpenCV摄像头录像(c++)

    opencv 从摄像头中读取视频并保存 c 版 YouthDance CSDN博客 opencv 保存摄像头视频 参考如上 CMakeLists txt cmake版本 cmake minimum required VERSION 2 8
  • 【Android】上拉加载更多,下拉刷新数据快速实现

    项目需求 在页面数据中 每次只显示一部分 当手指操作从下往上滑动时 进行请求加载更多数据 当从上往下滑动时 进行整个所有数据的刷新 需求实现 1 引入依赖 刷新 implementation com scwang smart refresh
  • 【满分】【华为OD机试真题2023 JAVA&JS】学校的位置

    华为OD机试真题 2023年度机试题库全覆盖 刷题指南点这里 学校的位置 知识点数组贪心排序 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 为了解决新学期学生暴涨的问题 小乐村要建所新学校 考虑到学生上学安全问题 需要所有
  • 【电商数仓】数仓调度之全流程调度(调度数据准备、Azkaban部署、创建数据库和表、Sqoop导出脚本、编写工作流程配置文件、一些注意事项)

    1082条消息 电商数仓 数仓调度之全流程调度 调度数据准备 Azkaban部署 创建数据库和表 Sqoop导出脚本 编写工作流程配置文件 一些注意事项 数仓权限系统和调度系统搭建 OneTenTwo76的博客 CSDN博客
  • uniApp动态更改页面顶部标题

    需求 多个功能公用一个页面 根据上个页面传递过来的参数动态更改顶部标题 onLoad option if option type permit uni setNavigationBarTitle title 许可证页面 else if op
  • ST7701芯片820*320屏幕移植stemwin

    简要说明 如题 公司最近更换820 320屏幕 移植stemwin 使用3线spi通讯 16RGB 这屏幕工作流程为 首先通过3线spi发送初始化指令 之后通过16bitRGB发送像素点 移植过程参考了安富莱 野火 https www nx
  • python爬虫selenium被检测处理(适用淘宝登录)

    1 增加这个是防止检测是webdriver谷歌驱动调起的请求 通用大部分 self chrome execute cdp cmd Page addScriptToEvaluateOnNewDocument source Object def
  • RandomAccessFile 实现文件分片获取发送和写入

    在实现文件上传的过程发现由于文件太大会导致程序接收和发送都出现问题 所以想着实现一个分片发送和写入的方法方便实现大文件上传 查了一些资料 在随机文件流操作时RandomAccessFile 恰好可以满足我的要求 这里主要是如何用Random
  • 怎么使用input执行xss攻击_XSS场景及修复方案总结

    xss原理 跨站脚本攻击 Cross Site Scripting 缩写为XSS 恶意攻击者往Web页面里插入恶意javaScript代码 当用户浏览该页之时 嵌入其中Web里面的javaScript代码会被执行 从而达到恶意攻击用户的目的
  • 大专生学Java真没出路吗?

    现在市场上的众多移动应用 大部分都是用Java做后台开发的 我们大家所熟知的支付宝 美团 淘宝 京东等都是用Java来做后台的 这么多互联网公司对Java如此青睐 这样也就助推Java的生态变得越来的越好 毕竟有大厂背书 生态越好 Java
  • 防范明文密码和散列值抓取

    一 单机密码抓取的防范方法 微软为了防止用户密码在内存中以明文形式泄露 发不了补丁KB2871997 关闭了Wdigest功能 windows server 2012以上版本默认关闭Wdigest 使攻击者无法从内存中获取明文密码 对于wi
  • openerp/odoo 权限解析

    前言 odoo权限管理主要分为4类 1 菜单权限 即未指定的用户组看不到该菜单 缺点 不安全 只是隐藏菜单 若用户知道菜单的id一样可以通过url查看菜单 2 对象级别 即有权限的对象才能有某种功能比如 增删改查的权限 3 记录级别权限 即
  • STM32 GPIO的配置寄存器

    1 STM32 GPIO的配置寄存器 CRL CRH 快速学习 39度C的博客 CSDN博客 配置寄存器 2 STM32 BSRR BRR ODR寄存器详情解析 存储技术 电子发烧友网 3 STM32 GPIO篇 一直在路上的Tom的博客
  • Mysql的redo log详解

    1 介绍 redo日志是在事务提交后生成的 如果此时服务down掉 后期重启可以用redo日志恢复数据 保证事务的持久性 事务提交后永久生效 2 redo日志生成流程 第1步 先将原始数据从磁盘中读入内存中来 修改数据的内存拷贝第2步 生成
  • synchronized () 括号中应该传什么对象?

    我看jdk源码的时候发现了这样的代码 同步锁中传入了静态的自定义的类 Lock 1 这种写法和直接传this有什么区别 2 类 Lock 定义成静态和不定义成静态有什么区别 对于代码块同步 也就是synchronized lock 这样的写
  • Centos7利用pyshark解析QUIC报文

    一 环境准备 利用pyshark解析报文 如果是http https等常见的协议 正常的版本一般也能搞定 但是如果解析比较新的协议 比如我这次要解析QUIC就得使用比较新的tshark版本 本次实践的环境是Centos7 装的tshark版
  • 【计算机网络】湖科大微课堂笔记 p7-10 计算机网络体系结构:常见的计算机网络体系结构、必要性、分层思想、专业术语

    视频 计算机网络体系结构 重点 难点 目录 常见的计算机网络体系结构 必要性 思想举例 专业术语 常见的计算机网络体系结构 OSI体系结构与TCP IP体系结构 用户主机的操作系统和路由器中 会带有符合TCP IP体系结构标准的TCP IP
  • 小波阈值去噪原理及实现

    小波阈值去噪原理及实现 1 小波阈值去噪的基本原理 2 小波阈值去噪需要考虑的问题 3 小波阈值的实现 1 小波阈值去噪的基本原理 将信号通过小波变换 采用Mallat算法 后 信号产生的小波系数含有信号的重要信息 将信号经小波分解后小波系