基于MATLAB的数字滤波器和均衡器设计.doc
《基于MATLAB的数字滤波器和均衡器设计.doc》由会员分享,可在线阅读,更多相关《基于MATLAB的数字滤波器和均衡器设计.doc(17页珍藏版)》请在沃文网上搜索。
1、基于MATLAB的简易声音信号频谱分析仪设计摘 要通过MATLAB强大的信号处理功能,先设计了几个理想滤波器,通过对理想滤波器的滤波特性分析对比,可以更直观得认识滤波器的功能。利用滤波器原理,结合数字均衡器的设计要求,对各种数字音频信号进行滤波处理,设计出一种可调节参数的数字滤波器,即一种均衡器。本文的数字均衡器以MATLAB为设计平台,有.wav文件的获取、滤波、保存和播放控制功能。在对声音文件进行频率分析的基础上,用10段均衡器可对声音信号进行调节后保存播放。关键字:MATLAB,滤波器,均衡器,傅里叶反变换1 概述随着数字化技术的快速、深入发展,人们对数字化电子产品所产生的图像、图形以及
2、声音等质量的要求越来越高。在实时数字处理过程中,往往需要对目标信号进行滤波处理,以满足用户对信号的要求。MATLAB 是一个数据分析和处理功能十分强大的工程实用软件,它的滤波器设计工具箱为实现声音信号的数字滤波提供了十分方便的函数和命令。本文将介绍基于MATLAB设计出的一种实用的数字滤波器,并对其功能进行扩展,设计出一种均衡器。2 设计原理滤波器的种类很多,按所通过信号的频段分为低通、高通、带通和带阻滤波器四种。低通滤波器:它允许信号中的低频或直流分量通过,抑制高频分量或干扰和噪声。高通滤波器:它允许信号中的高频分量通过,抑制低频或直流分量。带通滤波器:它允许一定频段的信号通过,抑制低于或高
3、于该频段的信号、干扰和噪声。带阻滤波器:它抑制一定频段内的信号,允许该频段以外的信号通过。上述每种滤波器又可以分为模拟滤波器和数字滤波器。如果滤波器的输入输出都是数字信号,则这样的滤波器称之为数字滤波器。根据数字滤波器冲激响应的时域特性,可将数字滤波器分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。2.1 滤波器设计原理滤波器就是对系统的输入信号进行滤波。输入x(n)和输出y(n)之间的关系是脉冲响应h(n),即 (2-1)如果滤波器的输入输出都为离散信号,那么该滤波器的脉冲响应也应该是离散信号,这样滤波器就成为了数字滤波器。上面的系统为时域离散系统时,其频域特性为
4、 (2-2)其中、分别是数字滤波器的输出序列和输入序列的频域特性,是数字滤波器的频域响应。可以看出,输入序列的频谱经过滤波后变成了;因此按照输入信号频谱的特点和处理信号的目的适当选择,使得滤波后的满足设计性能要求。在MATLAB中主要有Filter函数、Filtfilt函数等滤波函数。Filter函数滤波器的标准差分方程为 (2-3)如果不为1,那么滤波器的系数将用进行归一化处理,即各系数同除以。2.2 均衡器设计原理10段滤波器能够对以下几个频率段进行滤波,各段的音感特征如下所示:3060Hz(沉闷);60100Hz(沉重);100200Hz(丰满);200500Hz(力度);5001KHz
5、(明朗);1K2KHz(透亮);2K4Kz(尖锐);4K8Kz(清脆);8K16Kz(纤细)。通过对各频段的滤波特性设置即可调出不同的音效。打开音频文件后,先对原始声音信号进行傅里叶变换处理,然后从滚动条上获得各频段的滤波特性值,通过换算得到增益值,并构造滤波器频域特性响应,即可得到该频率范围的滤波器。使用该构造的滤波器对输入的原始声音信号进行频域滤波,并通过傅里叶反变换将滤波后的频域信号转化成的时域波形信号。然后,再播放该滤波后的声音信号,即可发现声音的音质效果发生了改变。这就是均衡器的基本工作原理。3 MATLAB程序设计3.1 模块设计该MATLAB程序的模块设计如下图所示。图1 模块设
6、计图3.2 图形界面设计首先打开MATLAB,在命令窗口中输入guide命令进入GUI图形设计界面。再新建一个空白的图形界面文件,添加如下的控件并设计它们的布局。(1) 添加5个axes控件,用于显示时域波形图和频域频谱图;(2) 添加4个static text控件,用于窗口及其他控件的说明使用;(3) 添加6个panel控件,将一组相关的控件框在一起;(4) 添加1个edit控件,用于输入频率参数值;(5) 添加2个pop-up menu控件,用于选择信号发生器产生的信号类型和均衡器参数配置;(6) 添加4个radiobutton,用于选择滤波器类型;(7) 添加11个slider控件,用于
7、设置均衡器参数和音量大小;(8) 添加11个push button控件,其中6个用于控制音频文件播放,2个用于打开和保存文件,其余3个用于控制均衡器设置。双击各个控件,打开其属性编辑窗,即可修改其名称、颜色、大小、初始值及位置等属性。最终编辑好的界面如下图所示:3.3 MATLAB编程当界面控件及布局创建完成以后,点击运行即可自动生成包含各控件回调函数在内的m文件。MATLAB对于输入框、按钮及滑动条等控件的响应都是通过自动调用相应的回调函数来实现的。回调函数即在一定的操作下自动执行的指令代码。本次数字滤波器及均衡器的设计主要功能有数字信号发生器,信号频谱分析显示,理想滤波器滤波,音频文件的打
8、开及保存,音频播放控制及均衡器效果设置等。下面仅介绍实现几个主要功能的M代码程序。(1)理想滤波器滤波。实现的代码及说明如下:N=handles.N;if(get(handles.RB_LowPass,Value)=1) fL=5000; % 设置低通截止频率 % 设置理想低通滤波器的频率特性 Hw=ones(1,fix(N*fL/fs),zeros(1,N-2*fix(N*fL/fs),ones(1,fix(N*fL/fs);elseif(get(handles.RB_HighPass,Value)=1) fH=5000; % 设置高通截止频率 % 设置理想高通滤波器的频率特性 Hw=zer
9、os(1,fix(N*fH/fs),ones(1,N-2*fix(N*fH/fs),zeros(1,fix(N*fH/fs);elseif(get(handles.RB_BandDamp,Value)=1) f0=2500; f1=10000; Hw=ones(1,fix(N*f0/fs),zeros(1,fix(N*(f1-f0)/fs),ones(1,N-2*fix(N*f1/fs),zeros(1,fix(N*(f1-f0)/fs),ones(1,fix(N*f0/fs);else f0=2500; f1=10000; Hw=zeros(1,fix(N*f0/fs),ones(1,fix
10、(N*(f1-f0)/fs),zeros(1,N-2*fix(N*f1/fs),ones(1,fix(N*(f1-f0)/fs),zeros(1,fix(N*f0/fs); endfPyy=Pyy(1:handles.N/2).*Hw(1:handles.N/2);plot(handles.axes4,f,fPyy,c);xlabel(handles.axes4,滤波后信号频谱 Freqency(Hz),fontweight,bold);ylabel(handles.axes4,Amplitude,fontweight,bold);set(handles.axes4,Color,0 0 0,X
11、Color,0 0.5 0,YColor,0 0.5 0);grid(handles.axes4);上面代码为理想滤波器频域滤波的部分代码,前一部分的if ; elseif ; elseif ; else ; end语句用于判断选择的理想滤波器类型,并用zeros和ones函数生成对应的理想滤波器频率特性离散值。后一语句将原始信号经快速傅里叶变换得到的频域特性与滤波器频域特性相乘,即得到滤波后的信号频域特性。然后,将得到的滤波后的信号频谱图输出到axes4坐标轴上。(2)音频信号的打开和保存。实现的代码如下:I. 打开音频文件function PB_open_Callback(hObject,
12、 eventdata, handles)filename = uigetfile(*.wav,选择声音文件);if(size(filename,2)1) % 判断是否已打开了声音文件 s,fs = wavread(filename); set(handles.musicname,string,filename); handles.s=s(:,1); handles.fs=fs; handles.sign=0; guidata(hObject,handles); end上面代码为打开音频文件按钮的回调函数。首先利用uigetfile函数打开检索文件对话框,打开一个wav音频文件,然后根据返回的文
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
20 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MATLAB 数字滤波器 均衡器 设计