数字信号处理音频FIR去噪滤波器(基于MATLAB GUI的开发)

news2024/12/23 23:13:05

1、内容简介


利用MATLAB GUI设计平台,用窗函数法设计FIR数字滤波器,对所给出的含有噪声的声音信号进行数字滤波处理,得到降噪的声音信号,进行时域频域分析,同时分析不同窗函数的效果。将文件解压至一个目录下,运行m文件即可使用。

2、函数使用


读取.wav音频文件函数:audioread();(老版本为wavread) MATLAB播放音乐函数:sound(); MATLAB停止播放音乐:clear sound 写入.wav音频文件函数:audiowrite();(老版本为audiowrite) 加入白噪声:noise=(max(x(:,1))/5)*randn(x,2); y=x+noise; 频谱分析: fft(); fftshift(); Fir滤波: fir1(n,Wn,ftype,window); 窗函数选择: 梯形窗boxcar 三角窗triang 海明窗hamming

汉宁窗hanning 布莱克曼窗blackman 凯塞窗kaiser

3、实现功能


实现的功能有:

  • 打开文件:选择路径打开wav格式的音频文件,自动生成音频的原始波形与频谱。

  • 加入噪声:有两种噪声可以选择加入,一种是白噪声,其频率蔓延整个频谱;一种是特定频率的噪声,可通过输入频率加入单一频率的噪声。加入噪声后自动绘制加入噪声后的波形与频谱。

  • 滤波处理:首先输入滤波器通/阻带的开始频率与截止频率(若为低/高通类型滤波,则只需输入开始频率;若为带通/阻类型,则开始与截止都要输入;输入频率值为真实频率值,可根据频谱图进行判断 ),之后选取窗函数和滤波类型,将会生成滤波处理后的波形与频谱。

  • 音频播放/停止:可随时播放/停止原始、加噪、滤波处理后的音频。

  • 图片导出:将波形、频谱图片一张张导出保存,可选的格式有jpg、png、bmp、eps。

  • 保存文件:将加躁/滤波后的音频导出保存。

4、操作实例


选取音乐“卢本伟语音包”,转换为wav格式导入,得到结果如下

添加白噪声后,此时播放音频能听到显著杂音。而从原始信号的频谱来看,初始音频的频率主要集中在0-1000Hz,因此我们可以选用低通滤波器,阻带开始频率设为1000Hz,选用矩形窗进行滤波,得到结果如下:

由于白噪声遍布于整个频谱,对于噪声频谱于音频频谱的重叠部分,我们无法通过FIR滤波器进行滤除,依然会有小部分杂音存在。若噪声为特定单一频率的噪声,我们可以较好地将其去除。对于该音频添加5000Hz的特定频率,通过设计带阻滤波器,阻带范围为4500-5500Hz对其进行滤波,如下图所示:

5、窗函数对比


仍选用上例中的5000Hz频率噪声,同时增加噪声幅度,如下图所示:

选用带阻滤波器,设置阻带范围4000-6000Hz,观察各窗函数对其滤波的效果。(每行从左到右分别是:矩形窗,三角窗,海明窗,汉宁窗,布莱克曼窗,凯塞窗,下同)

该种情况下滤波效果的总体排序为:凯瑟窗>矩形窗>汉宁窗>海明窗=三角窗>布莱克曼窗。

完整代码:

https://download.csdn.net/download/qq_38735017/87385584

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

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

相关文章

第6章 ESP32-Kconfig配置

ESP32-Kconfig配置 1. 新建Kconfig.projbuild文件 2. 写入配置项 新建menu menu "点灯配置"endmenu运行 idf.py menuconfig,结果如下 powershel vscode 可以看到,power shell中文支持上有乱码,所以接下来选择英文 2. 配置menu…

开发实践:一份复杂业务系统的 RESTFul 接口规范

1. 从需求入手 对象:增删改查 对象列表:获取 对象的复杂处理:挖掘、整理、汇总 2. 资源分类 对象型:**/project/1 列表型:**/projects 算法型:**/project/search?input** 3. 设计 URI 3.1. URI 命名…

游戏盾如何防护

什么是游戏盾呢游戏盾是DDoS高防IP产品系列中针对游戏行业的安全解决方案。 游戏盾专为游戏行业定制,针对性解决游戏行业中复杂的DDoS攻击、游戏CC攻击等问题。目前以对抗的形式存在的高防产品形态,也就是防御带宽要大于攻击者的流量。如果你是做运营商商…

设计模式学习(六):Template Method模板方法模式

一、什么是Template Method模式 模板的原意是指带有镂空文字的薄薄的塑料板。只要用笔在模板的镂空处进行临摹,即使是手写也能写出整齐的文字,但是具体写出的文字是什么感觉则依赖于所用的笔。如果使用签字笔来临摹,则可以写出签字似的文字&a…

【ROS2入门】ROS 2 services 概述

大家好,我是虎哥,从今天开始,我将花一段时间,开始将自己从ROS1切换到ROS2,在上一篇中,我们一起了解ROS 2中Topic, 这一篇,我们主要会围绕ROS中另外一个重要的概念“Services ”&…

excel图表技巧:如何在折线图上标注极值

折线图是大家日常工作中经常使用的一类基础图表,作用是体现数据的变化趋势。例如将每月的销售额通过折线图展示出来,数值变化就会很直观:抛开图表的美化,基本上大家做出来的折线图都是上图中的样子,而老菜鸟做出来的折…

<Linux>进度条小程序和git使用详解

进度条小程序和git使用详解 文章目录进度条小程序和git使用详解一、Linux第一个小程序 - 进度条1.\r && \n2.行缓冲3.进度条二、git使用详解1.git概述1.1.历史背景1.2.版本控制1.3.集中式与分布式的区别2.Gitee仓库创建2.1.新建仓库2.2.复制仓库链接2.3.克隆仓库2.4.扩…

Redis基础命令操作四之集合类型HASH

HASH命令 命令举例说明HSETHSET [OUTKEY] [INKEY][INVALUE]集合添加键值对[INKEY][INVALUE]HGETHGET [OUTKEY] [INKEY]获取集合中inkey对应的valueHGETALLHGETALL [OUTKEY]获取集合中所有key,value信息HDELHDEL [OUTKEY] [INKEY]从集合中删除inkey键值对HLENHLEN [OUTKEY]获…

linux部署KubeSphere和k8s集群(二)

上一篇文章讲述了在单个节点上安装 KubeSphere和k8s,这节主要讲解k8s多节点集群部署 第一步:设置主机名称hostname--(3台机器都设置) hostnamectl set-hostname k8s-master hostnamectl set-hostname k8s-node1 hostnamectl set-hostname k8s-node2 第二…

_Linux多线程--生产者消费者模型篇

文章目录1. 为何要使用生产者消费者模型2. 基于BlockingQueue的生产者消费者模型3. C queue模拟阻塞队列的生产消费模型条件变量使用规范简单测试1. BlockQueue (缓存--超市)2. ConProd.cc3. 结果展示升级版测试&&设计与RAII风格的加锁方式1. BlockQueue.hpp2. Task.hp…

MATLAB 实现路由算法详细教程(完整代码+数据)

问题描述:鉴于我们小组成员都来自计通学院,我们对专业知识计算机网络内的路由器进行研究。我们知道在整个互联网中,有着很多个小的无法互相连通的小网络,早在上世纪六十年代,针对不同网络无法互联的问题,路…

IC芯片类元件创建

--摘自凡亿教育 一、VS1003音频芯片 首先,先创建新的元器件库 按箭头所指的即可。 然后,我们右击箭头所指的键,选择第六个矩形。 然后,依次放置管脚 点击箭头所指,既可放置管脚。 由于我们放置管脚的时候&#xff…

python的webdriver应用

本文总结如何使用python的webdriver插件,应用自动化测试以及爬虫抓取数据。工具选择谷歌版本下载:https://www.iplaysoft.com/tools/chrome/webdriver版本:http://npm.taobao.org/mirrors/chromedriver/ 或https://chromedriver.storage.goog…

顺序表学习指南,请查收~

作者:爱塔居的博客_CSDN博客-JavaSE,数据结构领域博主 专栏:数据结构 作者简介:大三学生,希望一起进步! 文章目录 目录 文章目录 一、顺序表基本概念 二、练习 一、顺序表基本概念 🌺顺序表是用一段物理地…

常用工具的常用操作

写在前面 记录可能用到的各种工具常见技巧。 1:sublime 1.1:操作多列 首先选中要操作的列所在的行: 然后点击selection,spit lines: 接下来移动左右键就可以操作了,删除或者批量添加内容: 1…

创客匠人助力机构招生获客转化

后疫情时代,各行各业部署线上化成为一门必修课。 创客匠人作为一家专注教育培训行业的知识付费技术服务商,为了更好的帮助教培机构、教育企业立足于内容传播需求,打通线上线下资源通道,将线下资源向"线上核心平台"靠拢…

无极低码:100套大屏可视化源码,包含多个行业

随着互联网的发展,各项技术的不断成熟,数据可视化在新的时代,人们对数据的呈现方式开始有了新的要求。科技感、美观、直观、动感等等都成为现代软件系统新的设计和思考方向,特别是硬件的发展和数据的发展,数据分析的需…

Vue3商店后台管理系统设计文稿篇(一)

记录使用vscode构建Vue3商店后台管理系统,这是第一篇,主要记录Vue3项目创建过程,以及数据的挂载 文章目录一、Vue3项目创建二、取消代码规范检查三、数据简单挂载正文内容: 一、Vue3项目创建 使用如下命令全局安装yarn npm i -g …

Java开发 - Mybatis框架初体验

前言 在前文中,我们已经学习了Spring框架,Spring MVC框架,相信大家对这些基础的内容已经熟练使用了,今天,我们继续来学习Mybatis框架。就目前而言,Mybatis框架依然是比较实用的框架,这篇博客&a…

SpringMVC知识点记录

SpringMVC知识点记录1. SpringMVC简介2. 入门案例3. RequestMapping注解4. SpringMVC获取请求参数5. 域对象共享数据6.SpringMVC的视图7. RESTful8. RESTful 案例9. SpringMVC处理ajax请求10. 文件上传和下载11. 拦截器12. 异常处理器13. 注解配置SpringMVC14. SpringMVC执行流…