数字信号处理音频FIR去噪滤波器(基于MATLAB GUI的开发完整代码+报告+课设)

news2024/12/23 1:52:27

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/165322.html

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

相关文章

ithewei的2022年度总结

窗外的雨,顺着晒衣架汇聚成豆大的珠,落到一楼庭院顶棚上,嘀嗒不停; 路上的车,由远及近,又由近及远,疾驰而过; 床边的猫,也已入睡,时不时发出一两声细微的鼾声…

面试问:@Resource 和@Autowired 的区别是什么?该怎么回答

Resource 和 Autowired 这两个注解的作用都是Spring生态里面去实现 Bean 的依赖注入 Autowired注解的作用 Autowired是Spring里面提供的一个注解,它默认是根据类型来实现Bean的依赖注入。 Autowired注解里面有一个required属性,它的默认值是true&#…

人大金仓数据库安装篇

图形化安装 规划安装路径与修改目录属主 先用root账户挂载金仓镜像包 mount -o loop /install/KingbaseES_V008R006C005B0023_Lin64_single_install.iso /mnt 切换kingbase用户来安装金仓数据库 进入挂载目录/mnt执行./setup.sh 将金仓注册为系统服务 /KingbaseES/V8/Scrip…

1592_AURIX_TC275_PMU_部分安全措施

全部学习汇总: GreyZhang/g_TC275: happy hacking for TC275! (github.com) UCB的几种状态通过寄存器的数值可以直接获取到。启动代码会识别到UCB的错误,如果识别到后悔停止继续,因此不会启动MCU。启动代码也会检查HSM是否存在以及是否需要启…

基于TensorFlow2搭建神经网络实现鸢尾花iris.txt分类

分三步:本地读取鸢尾花数据集搭建神经网络优化本地读取鸢尾花数据集读取本地数据集的两种方法读取本地数据集有两种方法:(1)利用pandas中的函数读取,并处理成神经网络需要的数据结构pd.read_csv(文件名, header第几行作…

使用码云Gitee创建代码仓库并提交代码

目录 1. 登录Gitee官网 2. 创建代码仓库 3. 克隆仓库到本地 4. 提交代码到Gitee仓库 官方文档:创建你的第一个仓库 - Gitee.com 1. 登录Gitee官网 官网地址:Gitee - 基于 Git 的代码托管和研发协作平台 2. 创建代码仓库 点击图中加号创建仓库&am…

String的不可变性

1.什么是不可变对象 如果一个对象在创建之后就不能再改变它的状态,那么这个对象是不可变的(Immutable)。不能改变状态的意思是,不能改变对象内的成员变量,包括基本数据类型变量的值不能改变,引用类型的变量…

数据库面试题

数据库基础知识 什么是MySQL? MySQL是一个数据库管理系统。 数据库是数据的结构化集合。 MySQL数据库是关系型的。 关系数据库将数据存储在单独的表中,而不是将所有数据放在一个大仓库中。数据库结构被组织成针对速度进行了优化的物理文件。具有对象&a…

第五届字节跳动青训营 前端进阶学习笔记(一)前端和HTML

文章目录1.前言2.什么是前端3.前端需要关注哪些问题4.HTML语法5.HTML标签6.HTML中的内容划分7.总结这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天 1.前言 本次课程主要介绍了: 前端要解决的基本问题HTML的基本定义和语法为什么要语义化和怎么做的语义化 …

深度学习——梯度

一、初识梯度 import torch x torch.arange(4.0) print(x) x.requires_grad_(True) y 2 * torch.dot(x, x) #torch.matmul(x, x) print(y) y.backward() print(x.grad) print(x.grad 4*x)输出&#xff1a; tensor([0., 1., 2., 3.]) tensor(28., grad_fn<MulBackward0&g…

批次标准化Batch Normalization

批次标准化Batch Normalization 目录 批次标准化Batch Normalization 为什么需要批次标准化 产生上述变化趋势不匹配的原因 处理方法 处理方法的优化 Batch Normalization的引出Testing时的相应处理 批次标准化Batch Normalization 第五节 2021 - 类神经网络训练不起来怎么…

从【卡内基梅隆大学机器人概论课】认识机器人学科需要哪些技能栈

闲来无事&#xff0c;找到了卡内基梅隆大学机器人研究所&#xff0c;看了下他们机器人的教育&#xff0c;不得不感慨相比我们学校先进了不知多少&#xff0c;是真真切切让同学们去了解机器人的方方面面&#xff0c;下面摘自它们的概论作业。 作业0 作业1 作业2 作业3 作业4 作…

LeetCode 79 单词搜索 | 解题思路分享

原题链接&#xff1a;79. 单词搜索 题目难度&#xff1a;中等 题目描述 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的…

css03笔记

目录 css三大特性 优先级 权重叠加计算 chrome调试工具 盒子模型 1.1 盒子模型的介绍 2.1内容的宽度和高度 3.1边框&#xff08;border&#xff09; 3.2边框-单方向设置 3.3边框-单个属性 综合案例一&#xff08;新浪导航&#xff09; 4.1 内边距&#xff08;paddi…

5.11回溯法--电路板排列问题--排列树

问题描述 将n块电路板以最佳排列插入带有n个插槽的机箱中&#xff0c;要求对于给定的电路板连接块&#xff0c;确定最佳排列&#xff0c;使其具有最小的密度。设x[ ] 表示n块电路板的一个排列&#xff0c;x[ i ]表示在机箱的第 i 个插槽中插入电路板x[ i ]&#xff0c;x确定的电…

尚硅谷ES6李强笔记

1.课程介绍 1.es是什么 2.新特性的优点 3.学习课程必备知识背景 2.相关名词介绍 3. let变量声明以及声明特性 3.1变量声明方式 //普通声明 let a;//一次性声明多个变量 let a,b,c;//声明并且初始化 let a 100;//一次性声明多个并且初始化 let a2,b1,ci love you;3.2不允许重…

打工人必学的法律知识(一)——《中华人民共和国劳动合同法》必知必会

目录 一、劳动合同无效或者部分无效 二、竞业限制 三、劳动合同的履行和变更 四、劳动合同的解除和终止 一、劳动合同无效或者部分无效 第二十六条 下列劳动合同无效或者部分无效&#xff1a;&#xff08;一&#xff09;以欺诈、胁迫的手段或者乘人之危&#xff0c;使对方…

使用FFmpeg命令处理音视频

文章目录前言一、ffprobe相关命令1.使用ffprobe查看音频文件的信息2.使用ffprobe查看视频文件的信息二、ffplay相关命令1.基本的ffplay命令2.音视频同步命令三、ffmpeg相关命令1.ffmpeg通用参数2.ffmpeg视频参数3.ffmpeg音频参数4.ffmpeg示例总结前言 FFmpeg是一套可以用来记录…

【C语言】字符函数,字符串函数,内存函数及其模拟实现

文章目录求字符串长度strlen长度不受限制的字符串函数strcpystrcatstrcmp长度受限制的字符串函数strncpystrncatstrncmp字符串查找函数strstrstrtokstrerror字符函数字符分类函数字符转换函数内存操作函数memcpymemmovememsetmemcmp求字符串长度 strlen 函数功能 求字符串长…

【机器学习之模型融合】Voting投票法简单实践

目录 前言&#x1f49c; 1、使用sklearn实现投票法&#x1f494; 1.1、导入工具库&#xff0c;准备数据&#x1f495; 1.2、定义交叉验证评估函数&#x1f496; 1.3、建立基于交叉验证的benchmark、做模型选择&#x1f31f; 1.4、构建多组分类器、进行融合&#x1f4a5;…