【数字信号去噪】小波软阈值+硬阈值+改进阈值数字信号去噪【含Matlab源码 1025期】

news2025/1/21 15:33:46

⛄一、小波语音降噪简介

对于噪声频谱遍布于语音信号频谱之中的宽带噪声,如果噪声振幅比大部分的语音信号振幅低,则削去低幅度成分也就削去了宽带噪声。基于这种思路,可以在频域中采取中心限幅的方法,即让带噪语音信号通过一限幅滤波器,高幅度频谱可以通过而低幅成分不允许通过,从而实现噪声抑制。需要注意的是中心削波不可避免地要损害语音质量,通常只在频域中进行,而一般不在时域中实施。
小波降噪的原理类似于中心削波法。小波降噪最初是由Donoho和Johnstone提出的, 其主要理论依据是,小波变换具有很强的去数据相关性,它能够使信号的能量在小波域集中在一些大的小波系数中;而噪声的能量却分布于整个小波域内。因此,经小波分解后,信号的小波系数幅值要大于噪声的系数幅值。因此,幅值比较大的小波系数一般以信号为主,而幅值比较小的系数在很大程度上是噪声。于是,采用阈值的办法可以把信号系数保留,而使大部分噪声系数减小至0。小波降噪的具体处理过程为:将含噪信号在各尺度上进行小波分解,设定一个阈值,幅值低于该阈值的小波系数置为0,高于该阈值的小波系数或者完全保
留, 或者做相应的“收缩”(shrinkage) 处理。最后; 将处理后获得的小波系数用逆小波变换进行重构,得到去噪后的信号。
阈值去噪中,阈值函数体现了对超过和低于阈值的小波系数的不同处理策略,是阈值去噪中关键的一步。设w表示小波系数, T为给定阈值, sgn(*) 为符号函数, 常见的阈值函数主要有:
在这里插入图片描述

⛄二、部分源代码

clc
clear all
close all
fs = 20e3; % 采样频率
fn = 3e3; % 固有频率
y0 = 5; % 位移常数
g = 0.1; % 阻尼系数
T = 0.01; % 重复周期
N = 4096; % 采样点数
NT = round(fsT); % 单周期采样点数
t = 0:1/fs:(N-1)/fs; % 采样时刻
t0 = 0:1/fs:(NT-1)/fs; % 单周期采样时刻
K = ceil(N/NT)+1; % 重复次数
y = [];
for i = 1:K
y = [y,y0
exp(-g2pifnt0).sin(2pifnsqrt(1-g^2)*t0)];
end
y = y(1:N);
Yf = fft(y); % 频谱
y5 = awgn(y,0.5,‘measured’); % Add white Gaussian noise
y10 = awgn(y,1,‘measured’); % Add white Gaussian noise
y15 = awgn(y,5,‘measured’); % Add white Gaussian noise
%%信噪比=0.5--------------------------------------------

mse12=MSE(y5,xdy12);
PSNR12=PSNR(y5,xdy12);
st=sprintf(‘经软阈值函数去噪后的均方差=%.2f,信噪比=%.2f’,mse12,PSNR12);disp(st)

st=sprintf(‘经半软阈值函数去噪后的均方差=%.2f,信噪比=%.2f’,mse13,PSNR13);disp(st)
figure(1);
subplot(511);plot(t,y);axis([0,inf,-4,5]);title(‘原始信号’);xlabel(‘时间e(s)’);ylabel(‘幅度’)
subplot(512);plot(t,y5);axis([0,inf,-4,5]);title(‘加入0.5db高斯白噪声的信号’);xlabel(‘时间e(s)’);ylabel(‘幅度’)
subplot(513);plot(t,xdy11);axis([0,inf,-4,5]);title(‘经硬阈值函数处理后的信号’);xlabel(‘时间e(s)’);ylabel(‘幅度’)
subplot(514);plot(t,xdy12);axis([0,inf,-4,5]);title(‘经软阈值函数处理后的信号’);xlabel(‘时间e(s)’);ylabel(‘幅度’)
subplot(515);plot(t,xdy13);axis([0,inf,-4,5]);title(‘经半软阈值函数处理后的信号’);xlabel(‘时间e(s)’);ylabel(‘幅度’)
function X = denh(x, wname, n, thr)
%硬阈值

[C, S] = wavedec2(x, n, wname); %进行小波分解
dcoef = C( prod(S(1, 😃) + 1 : end); %高频部分系数

ind = find( abs(dcoef) < thr) + prod(S(1, 😃); %小于阈值thr的系数
C(ind)=0; % 直接置零

a=0.6;
ind = find( abs(dcoef) >= thr) + prod(S(1, 😃); %大于阈值thr的系数
C(ind) = C(ind);
%按照公式处理
function X = denr(x, wname, n, thr)
% 软阈值

[C, S] = wavedec2(x, n, wname); %进行小波分解
dcoef = C( prod(S(1, 😃) + 1 : end); %高频部分系数

ind = find( abs(dcoef) < thr) + prod(S(1, 😃); %小于阈值thr的系数
C(ind) = 0; % 直接置零


## ⛄三、运行结果
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210618212749565.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1RJUUNtYXRsYWI=,size_16,color_FFFFFF,t_70#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021061821274924.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1RJUUNtYXRsYWI=,size_16,color_FFFFFF,t_70#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021061821274917.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1RJUUNtYXRsYWI=,size_16,color_FFFFFF,t_70#pic_center)
![在这里插入图片描述](https://img-blog.csdnimg.cn/2021061821274915.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1RJUUNtYXRsYWI=,size_16,color_FFFFFF,t_70#pic_center)


## ⛄四、matlab版本及参考文献
**1 matlab版本**
2014a

**2 参考文献**
[1] 沈再阳.精通MATLAB信号处理[M].清华大学出版社,2015.
[2]高宝建,彭进业,王琳,潘建寿.信号与系统——使用MATLAB分析与实现[M].清华大学出版社,2020.
[3]王文光,魏少明,任欣.信号处理与系统分析的MATLAB实现[M].电子工业出版社,2018.

**3 备注**
简介此部分摘自互联网,仅供参考,若侵权,联系删除

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

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

相关文章

实战关于登录框的渗透测试

前言 登录框可以说是我们漏洞挖掘中最常见的点&#xff0c;漏洞的种类也是相当的多&#xff0c;相信大家在登录框中发现的漏洞数不胜数。 主要有以下这些漏洞 弱口令 SQL注入 水平越权 垂直越权 逻辑漏洞 短信轰炸 邮箱轰炸 信息泄露SQL注入 看到登录框&#xff0c;输入信…

C++智能指针之weak_ptr

C智能指针之weak_ptr前言weak_ptr总结前言 在C中&#xff0c;动态内存的申请和释放是通过运算符&#xff1a;new 和 delete 进行管理的。其中 new 负责申请内存&#xff0c;delete负责释放内存。 动态内存的使用很容易出现问题&#xff0c;这主要在于你需要保证在正确的时间释放…

【MAX78000基础案例演示】

【MAX78000基础案例演示】1. MAX78000配套软硬件1.1 硬件1.2 软件1.3 demo例程2. ADC2.1 描述2.2 设置2.3 输出3. GPIO3.1 描述3.2 设置3.3 输出4. UART4.1 描述4.2 设置4.3 输出6.小结1. MAX78000配套软硬件 有关使用 SDK 的详细信息&#xff0c;请参阅MAX78000 评估套件入门…

(附源码)计算机毕业设计Java巴音学院学生资料管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven Vue 等等组成&#xff0c;B/…

Android Parcelable反序列化漏洞分析与利用

文章目录前言背景知识Parcelable序列化Bundle的数据结构LaunchAnyWhereCVE-2017-13288漏洞利用原理解析POC程序攻击演示CVE-2017-13315漏洞利用原理解析POC程序攻击演示漏洞Demo思考漏洞利用原理解析POC程序(供参考)总结前言 今年年初曾关注到 heen 大佬在 2018 年中旬写的一篇…

3-6数据链路层-广域网

广域网&#xff08;WAN&#xff0c;Wide Area Network)&#xff0c;通常跨接很大的物理范围&#xff0c;所覆盖的范围从几十公里到几千公里&#xff0c;它能连接多个城市或国家&#xff0c;或横跨几个洲并能提供远距离通信&#xff0c;形成国际性的远程网络。 文章目录一.基本概…

本周总结(11.21-11.27)

周一&#xff1a; ssm项目写了委托 写的过程中边写边学习了一些布局用法。 周二: ssm项目写了查看 这部分内容主要还是在前端上改了很久&#xff0c;首先就是因为三种房源各不相同&#xff0c;每个房源都需要创建一个表&#xff0c;数据也不一致&#xff0c;所以详细房源页面…

ps常用操作

ps常用操作 个人总结&#xff0c;半路出家&#xff0c;仅供个人习惯&#xff0c;仅供个人参考。1.如何将导入的图片放大&#xff1f;&#xff1f;&#xff1f; ctrl 和 加号 2.如何去除阴影或者粗糙的地方&#xff1f; 第一种方式&#xff0c;选择图像&#xff0c;选择填充 …

进军东南亚市场,腾讯云数据库 TDSQL 助力印尼 BNC 银行数字化转型

腾讯云数据库在助力金融核心系统分布式替换上&#xff0c;已经辐射到了东南亚市场。 东南亚最大的银行之一印尼BNC银行&#xff08;Bank Neo Commerce&#xff09;已正式完成新核心分布式迁移&#xff0c;使用腾讯云数据库TDSQL后&#xff0c;系统运行平稳顺畅。这标志着腾讯云…

电机与拖动 - 2 变压器

2 变压器2.1 变压器的用途与种类2.3 变压器基本结构2.4 变压器型号与额定值2.2 变压器工作原理2.5 变压器的等效电路2.6 变压器的参数测定 2 变压器 2.1 变压器的用途与种类 变压器用途&#xff1a;本课程讨论变换交流的电压幅值&#xff0c;不改变频率与电压交直流类型。电厂…

HBase安装部署

首先&#xff0c;启动Zookeeper 集群 启动Hadoop集群 HBase 的解压 更名 配置环境变量 添加 #HBASE_HOME export HBASE_HOME/opt/module/hbase export PATH$PATH:$HBASE_HOME/bin注意路径和你配置的hbase安装路径相同&#xff0c;不要直接抄 source一下 让配置的环境变量…

【Android】App开发-动画效果篇

在我们玩手机的过程中&#xff0c;如果我们点击某一个页面时&#xff0c;会出现一个页面动画加载或者动画效果的现象。现在我们就来看看App开发中是如何实现动画效果的。 目录 动画的分类 逐帧动画&#xff1a; 补间动画&#xff1a; 动画的分类 在常见的app使用的动画中&…

面试:事件拦截相关问题

Q1&#xff1a;分发的事件被view消耗了&#xff0c;后续事件是如何快速找到这个view的&#xff1f; ViewGroup不拦截事件又是如何将事件分发给子View&#xff1f; 带着问题重学Android事件分发 - 掘金 我们之前经常背的八股文&#xff1a; 当你手指触摸到屏幕这时候ViewGro…

BUUCTF Misc 隐藏的钥匙 另外一个世界 FLAG 神秘龙卷风

隐藏的钥匙 下载文件 使用010 editor工具查看 查找flag 将内容复制到base64在线 得到flag flag{377cbadda1eca2f2f73d36277781f00a} 另外一个世界 下载文件 使用010 eitor查看 看到了一串二进制&#xff0c;进行二进制转换字符串 得到flag flag{ko…

XCTF1-web unseping

unseping 题目描述 进入场景 源代码分析&#xff0c;反序列化场景 <?php highlight_file(__FILE__);class ease{private $method;private $args;function __construct($method, $args) {$this->method $method;$this->args $args;}function __destruct(){if (in_…

FPGA 20个例程篇:18.SD卡存放音频WAV播放(上)

第七章 实战项目提升&#xff0c;完善简历 18.SD卡存放音频WAV播放&#xff08;上&#xff09; 在最后一章里&#xff0c;我们来做几个实战项目&#xff0c;一方面是对前面学习知识的一种回顾&#xff0c;另一方面这几个小项目也非常贴近实际工程&#xff0c;其中例程“SD卡存…

CENTOS安装 graylog4.39

我们直接开始 基础环境和java sudo yum install epel-release 并安装带有 sudo yum install pwgenyum install java-1.8.0-openjdk-headless.x86_64 MONGODB 安装数据库 vi /etc/yum.repos.d/mongodb-org.repo[mongodb-org-4.2] nameMongoDB Repository baseurlhttps://rep…

【STL】map容器

map 作为关联式容器的一种&#xff0c;map容器存储的都是pair对象&#xff0c;也就是用pair类模板创建的键值对。其中&#xff0c;各个键值对的键和值可以是任意数据类型&#xff0c;包括C基本数据类型、使用结构体或类自定义的类型。 默认情况下&#xff0c;map容器选用std:…

vmware虚拟机centos7扩容

vmware先进行磁盘扩展 从原来的20G扩展到100G: 扩展磁盘时可能会遇到需要修复磁盘的情况: // 进入vmware安装目录cd D:\开发工具\VMWare\ // 修复, 其中.vmdk文件为虚拟机磁盘文件vmware-vdiskmanager -R "F:\VM_Centos\CentOS 7 64 位.vmdk" 扩展成功&#xff1…

mysql死锁介绍以及解决

什么是死锁 死锁是2个线程在执行过程中&#xff0c; 因争夺资源而造成的相互等待的现象&#xff0c;若无外力作用&#xff0c;它们将无法推进下去。 死锁产生的4个必要条件 互斥条件 指进程对所分配的资源进行排他性使用&#xff0c;即一段时间内某资源只有一个进程占用&#…