收藏 分享(赏)

基于matlab数字均衡器设计.docx

上传人:HR专家 文档编号:6206876 上传时间:2019-04-02 格式:DOCX 页数:14 大小:169.75KB
下载 相关 举报
基于matlab数字均衡器设计.docx_第1页
第1页 / 共14页
基于matlab数字均衡器设计.docx_第2页
第2页 / 共14页
基于matlab数字均衡器设计.docx_第3页
第3页 / 共14页
基于matlab数字均衡器设计.docx_第4页
第4页 / 共14页
基于matlab数字均衡器设计.docx_第5页
第5页 / 共14页
点击查看更多>>
资源描述

1、表 1 频率的音感特征3060Hz 沉闷 如没有相当大的响度,人耳很难感觉。60100Hz 沉重 80Hz 附近能产生极强的“重感”效果,响度很高也不会给人舒服的感觉,可给人以强烈的刺激作用。100200Hz 丰满 200500Hz 力度 易引起嗡嗡声的烦闷心理。5001KHz 明朗 800Hz 附近如提升 10dB,会明显产生一种嘈杂感,狭窄感。1K2KHz 透亮 2800Kz 附近明亮感关系最大。2K4Kz 尖锐 6800Hz 形成尖啸,锐利的感觉。4K8Kz 清脆 3400Hz 易引起听觉疲劳。8K16Kz 纤细 7.5KHz 音感清彻纤细。3060Hz 沉闷 如没有相当大的响度,人耳很

2、难感觉。2设计原理2.1 数字滤波器2.1.1 数字滤波器的原理简介数字滤波器的功能是把输入序列通过一定的运算,变换成输出序列。数字滤波器一般可用两种方法实现:一种是根据描述数字滤波器的数学模型或信号流程图,用数字硬件构成专用的数字信号处理机,即硬件方式;另一种是编写滤波器运算程序,在计算机上运行,即软件方式。考虑到软件的灵活性及易于实现,本文采用软件方式实现数字滤波器。数字滤波器有无限冲激响应(IIR)和有限冲激响应(FIR)两种。下面分别介绍:(1) IIR 滤波器IIR 滤波器的特点是:单位冲激响应 h(n)是无限长的;系统函数 H(z)在有限长 Z 平面(00 处收敛,极点全部在 z=

3、0 处(即 FIR 一定为稳定系统);结构上主要是非递归结构,没有输出到输入反馈。但有些结构中(例如频率抽样结构)也包含有反馈的递归部分。其系统函数的一般形式为(3)对应的差分方程为(4)FIR 系统的基本结构有 直接型、级联型、快速卷积型、频率取样型等。2.1.2 FIR 与 IIR 滤波器的比较与选择IIR 滤波器可以用比 FIR 滤波器少的阶数来满足相同的技术指标,这样,IIR 滤波器所用的存储单元和所用的运算次数都比 FIR 滤波器少。FIR 滤波器可得到严格的相位,而 IIR 滤波器不能得到。事实上,IIR 滤波器的选频特性越好,它的相位的非线性就越严重。因此在需要严格线性相位的情况

4、下应该选择 FIR滤波器。IIR 滤波器可利用模拟滤波器现成的设计公式、数据和表格,因而计算工作量较小,对计算工具要求不高。FIR 滤波器没有现在的设计公式,对计算工具要求较高,需要借助计算机来设计。另外,IIR 滤波器主要是设计规格化的、频率特性为分段常数的标准低通、高通、带通、带阻和全通滤波器,而 FIR 滤波器可设计出理想正交变换器、理想微分器、线性调频器等各种网络,适应性较广。总之,IIR 和 FIR 这两种滤波器各有特点,在实际应用中空间选择中哪种滤波器,就从多方面的因素来考虑。例如用于语音通信的滤波器,对相位要求不是主要的,因此选用 IIR 滤波器较为合适,可以充分发挥其经济和高效

5、的特点。而图像信号处理和数据传输等以波形携带信息的系统,对相位的线性要求较高,因此采用 FIR 滤波器较好。对于数字均衡器,一方面是用于处理语言信号,另一方面需要用到频率特性分段的带通滤波器,因此应该 IIR 滤波器。下面介绍 IIR 滤波器的设计方法。2.1.3 IIR 数字滤波器的设计方法实际中的数字滤波器都是用有限精度算法实现的线性非移变离散系统,设计 IIR 数字滤波器的方法主要有两种:一种是利用模拟滤波器的理论来设计,另一种是计算机辅助设计,即使用最优化技术设计。利用模拟滤波器的设计理论来设计 IIR 滤波器,就是首先根据实际要求设计一个模拟滤波器,然后再将这个模拟滤波器转换成数字滤

6、波器。由于模拟网络综合理论已经发展得很成熟,故许多常用的模拟滤波器不仅有了简单而严格的设计分式,而且设计参数已经表格化,所以设计起来很方便。因此本文采用第一种方法。设计步骤大致分以下三步:(1) 设计模拟滤波器。根据实际需要确定滤波器的参数,利用的滤波器的设计公式设计出模拟滤波器并得到其传递函数 H(s),常用的滤波器有巴特沃斯滤波器、椭圆滤波器和切比雪夫滤波器;(2) 将模拟滤波器转换成数字滤波器。利用冲激响应不变法或双线性变法将H(s)转换成 H(z),不同的设计方法对应于不同的 s 平面到 z 平面的映射公式;(3) 频率变换。上述方法得到的是低通滤波器,为了得到高通、带通、带阻滤波器,

7、还需要用利用变换公式作频率变换。以上各步骤都有成熟的理论与公式,具体可参看文献3。2.2 均衡器的原理2.2.1 均衡器总体设计均衡器的基本功能是调节各频段的信号强弱,为了满足该功能,本文采用如下的方法:Step1:设计出对应八个频段的八个带通滤波器;Step2:对原始信号分八路用八个带通滤波器进行滤波;Step3:将八个滤波器的滤波结果加权求和,权值的设计与均衡器的调节要求一致。这样最终得到的结果便是所需要的均衡结果。其中第 2 步中各带通滤波器的输入信号均为原始信号,而不是“串联”地滤波。设原始输入信号为 x(n),第 i 路的输出信号为 ,第 i 路的权值为 ,均衡器的输出信号为 y(n

8、),则有(5)(6)式中, 、 为滤波器的参数,可由 2.1.3 节的方法得到,N 为滤波器的阶数。具体应用中,式(6)有两个问题,下节将介绍这两个问题并给出解决方法。2.2.2 滤波计算的两个问题(1) 数组越界问题即当 n1)yi=1;else if(yi1)yi=1;else if(yi-1)yi=-1;(3) 保存为 qfilter.cpp,放在 MATLAB 工作目录,在 MATLAB 中运行 mex qfilter.cpp 生成 qfilter.dll。这样,只需调用 qfilter 函数即能实现滤波。3.4 实时显示的实现软件的功能要求实时显示波形与频谱分析结果,这里采用分批处理

9、的方法。即先取一批信号,将其播放出来,同时进行 FFT,并绘出时域波形与频谱分析结果,然后取下一批信号由于各批信号间的时间间隔很小,从而感觉像连续播放,而时域波形与频谱则是实时地变化。该功能主要在“播放”按钮的回调函数中实现N=length(handles.yy);n=4096;step=n/handles.Fs;from=1;to=n;ymax=max(handles.y);ymin=min(handles.y);f=linspace(0,handles.Fs/2,n/2);fband=handles.fband;num=length(fband)-1;ticwhile to=N;y=han

10、dles.yy(from:to,:);pause(step-toc*0.99);wavplay(y,handles.Fs,async);ticP=fft(y,n);Pyy =2*abs(P)/n;loglog(handles.axes1,f,Pyy(1:n/2);axis(handles.axes1,fband(1) fband(num+1) 1e-3 ymax);plot(handles.axes2,y);ylim(handles.axes2,ymin ymax);from=from+n;to=to+n;end采用异步播放方式可以使得播放不占用主线程,从而使得播放效果不会很卡。为了使得播放流

11、畅,需要与 pause 的使用结合,具体方法为用 tic 和 toc 计算出其它代码运行时间,然后用播放时间减去其它代码运行时间,从而得到需要暂停运行的时间。4运行实例与误差分析4.1 运行实例图 5 是程序的运行的一个实例,可以看到,基本上可以实现各个频段的均衡与调结。但是并不能完全滤掉某个频段的信号。另外,为了比较 MATLAB 的 filter 函数与 VC 写的 qfilter 的执行速度,软件中提供了选择滤波程序的界面,图 5 中的运行结果为 qfilter 的运行时间,为0.031 秒,而相同情况下,MATLAB 的 filter 的运行时间为 0.157 秒,如图 6 所示。从而

12、混合编程的方式大大提高了软件的运行效率。所以在均衡器功能上直接采用 qfilter。4.2 误差分析理想的滤波器是不存在的,实际中只能尽量地接近理想滤波器,所以只能尽量地去接近理想的滤波器。对于 IIR 数字滤波器,阶数越高,则滤波器的精度越高,即越接近于理想的情况,但计算机运行速度就越慢了,所以实际中应该权衡运行速度与滤波器的精度。另外,计算机本身也有误差(如截断误差),但相对于滤波器的设计误差,计算机的计算误差可以怱略不计。故提高精度关键在于提高滤波器的设计精度。图 5 运行结果实例图 6 MATLAB 的 filter 的运行时间另外,每个带通滤波器之间的过渡也有设计误差,理论上带通滤波

13、器间的过滤应该满足各滤波器的频率响应曲线叠加起来为一条值为 1 的水平线,但实际中只能尽量去接近理论的情况。5总结与展望5.1 总结本文首先对数字滤波器的原理进行了分析,并选择了一种实现数字均衡器的方案,在软件的设计上采用软件工程的理论,使用面向数据流的设计方法进行软件设计,并且采用了模块划分的方法。在实现的时候采用 MATLAB 与 VC混合编程的方式,这样不仅利用了 MATLAB 的强大工具箱,而且使得开发的软件有着运行速度快的特点。界面上采用 MATLAB 提供的 GUIDE 工具进行设计,使得软件开发效率较高。对于均衡器所要求的功能,已经全部实现,但限于篇幅,本文只给出了部分功能的实现方法。最后给出了软件的运行结果,并对软件进行了误差分析。5.2 展望该软件在播放前需要点滤波按钮,这使得操作变得麻烦,所以可以将滤波功能加到播放中,这就意味着需要加快程序的运行速度可者采用多线程机制。带通滤波器频率交界处的误差可以通过优化设计的方法来将其减小,即各带通滤波器不完全以给定的频带为自己的生成参数,而是以附近的某个频率值作为其生成参数,这样就需要用到优化的理论。其实可以将软件的主体用 VC 进行开发,部分难以实现但运行次数不多的函数则借用 MATLAB,实现以 VC 的主体的混合编程,这样可以实现多线程,并且运行速度会进一步加快,但这种开发方式的开发时间相对较长。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 学术论文 > 大学论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报