基于MATLAB的数字均衡器设计.docx

上传人:b****4 文档编号:5048530 上传时间:2023-05-07 格式:DOCX 页数:13 大小:386.35KB
下载 相关 举报
基于MATLAB的数字均衡器设计.docx_第1页
第1页 / 共13页
基于MATLAB的数字均衡器设计.docx_第2页
第2页 / 共13页
基于MATLAB的数字均衡器设计.docx_第3页
第3页 / 共13页
基于MATLAB的数字均衡器设计.docx_第4页
第4页 / 共13页
基于MATLAB的数字均衡器设计.docx_第5页
第5页 / 共13页
基于MATLAB的数字均衡器设计.docx_第6页
第6页 / 共13页
基于MATLAB的数字均衡器设计.docx_第7页
第7页 / 共13页
基于MATLAB的数字均衡器设计.docx_第8页
第8页 / 共13页
基于MATLAB的数字均衡器设计.docx_第9页
第9页 / 共13页
基于MATLAB的数字均衡器设计.docx_第10页
第10页 / 共13页
基于MATLAB的数字均衡器设计.docx_第11页
第11页 / 共13页
基于MATLAB的数字均衡器设计.docx_第12页
第12页 / 共13页
基于MATLAB的数字均衡器设计.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于MATLAB的数字均衡器设计.docx

《基于MATLAB的数字均衡器设计.docx》由会员分享,可在线阅读,更多相关《基于MATLAB的数字均衡器设计.docx(13页珍藏版)》请在冰点文库上搜索。

基于MATLAB的数字均衡器设计.docx

基于MATLAB的数字均衡器设计

基于MATLAB的数字滤波器设计

摘要:

通过Matlab强大的信号处理功能,分析数字均衡器的设计要求,对各种数字音频信号进行滤波处理,设计出一种比较合理的数字滤波器,并在此基础上设计一种均衡器,最后对该数字滤波器和均衡器进行综合测试并改进,使其达到要求的指标。

关键词:

MATLAB;数字滤波器;均衡器

一、概述

随着数字化技术的快速、深入发展,人们对数字化电子产品所产生的图像、图形以及声音等质量的要求越来越高。

在实时数字处理过程中,与D/A和A/D转换相关的模拟信号重构过程是决定数字系统输出质量的关键。

在声音的拾取过程及通过音响设备的传送过程中,由于设备或器件的原因,其幅度对频率的响应往往不一致,这样就达不到原来的效果,往往需要对目标信号进行滤波处理,以满足用户对信号的要求。

MATLAB是一个数据分析和处理功能十分强大的工程实用软件,它的滤波器设计工具箱为实现声音信号的数字滤波提供了十分方便的函数和命令。

本文将介绍基于MATLAB设计出的一种实用的数字滤波器,并对其功能进行扩展,设计出一种均衡器。

滤波器的种类很多,按所通过信号的频段分为低通、高通、带通和带阻滤波器四种。

低通滤波器:

它允许信号中的低频或直流分量通过,抑制高频分量或干扰和噪声。

高通滤波器:

它允许信号中的高频分量通过,抑制低频或直流分量。

带通滤波器:

它允许一定频段的信号通过,抑制低于或高于该频段的信号、干扰和噪声。

带阻滤波器:

它抑制一定频段内的信号,允许该频段以外的信号通过。

上述每种滤波器又可以分为模拟滤波器和数字滤波器。

如果滤波器的输入输出都是数字信号,则这样的滤波器称之为数字滤波器,它通常通过一定的运算关系改变输入信号所含频率成分的相对比例或者滤除某些频率成分来实现滤波。

根据数字滤波器冲激响应的时域特性,可将数字滤波器分为两种,即无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。

根据数字信号处理的一般理论,IIR滤波器的特征是具有无限持续时间的冲激响应,而FIR滤波器使冲激响应只能持续一定的时间。

从设计方法上讲,数字滤波器又可分为:

巴特沃斯响应(最平坦响应)

巴特沃斯响应能够最大化滤波器的通带平坦度。

该响应非常平坦,非常接近DC信号,然后慢慢衰减至截止频率点为-3dB,最终逼近-20ndB/decade的衰减率,其中n为滤波器的阶数。

巴特沃斯滤波器特别适用于低频应用,其对于维护增益的平坦性来说非常重要。

贝塞尔响应

除了会改变依赖于频率的输入信号的幅度外,滤波器还会为其引入了一个延迟。

延迟使得基于频率的相移产生非正弦信号失真。

就像巴特沃斯响应利用通带最大化了幅度的平坦度一样,贝塞尔响应最小化了通带的相位非线性。

切贝雪夫响应

在一些应用当中,最为重要的因素是滤波器截断不必要信号的速度。

如果你可以接受通带具有一些纹波,就可以得到比巴特沃斯滤波器更快速的衰减。

附录A包含了设计多达8阶的具巴特沃斯、贝塞尔和切贝雪夫响应滤波器所需参数的表格。

其中两个表格用于切贝雪夫响应∶一个用于0.1dB最大通带纹波;另一个用于1dB最大通带纹波。

二、设计原理

根据数字滤波器冲激响应的时域特性的比较,FIR数字滤波器优点是对有限字长效应不敏感,严格线性相位;但是实现同样指标,所需计算量远大于IIR滤波器。

为了说明两种滤波器的设计方法,本设计中在数字滤波器部分使用FIR方法,而在均衡器部分使用IIR的方法分别进行设计。

2.1用窗函数法设计FIR滤波器

根据过渡带宽及阻带衰减要求,选择窗函数的类型并估计窗口长度N(或阶数M=N-1),窗函数类型可根据最小阻带衰减As独立选择,因为窗口长度N对最小阻带衰减As没有影响,在确定窗函数类型以后,可根据过渡带宽小于给定指标确定所拟用的窗函数的窗口长度N,设待求滤波器的过渡带宽为Δw,它与窗口长度N近似成反比,窗函数类型确定后,其计算公式也确定了,不过这些公式是近似的,得出的窗口长度还要在计算中逐步修正,原则是在保证阻带衰减满足要求的情况下,尽量选择较小的N,在N和窗函数类型确定后,即可调用MATLAB中的窗函数求出窗函数wd(n)。

根据待求滤波器的理想频率响应求出理想单位脉冲响应hd(n),如果给出待求滤波器频率应为Hd,则理想的单位脉冲响应可以用下面的傅里叶反变换式求出:

在一般情况下,hd(n)是不能用封闭公式表示的,需要采用数值方法表示;从w=0到w=2π采样N点,采用离散傅里叶反变换(IDFT)即可求出。

用窗函数wd(n)将hd(n)截断,并进行加权处理,得到

如果要求线性相位特性,则h(n)还必须满足:

根据上式中的正、负号和长度N的奇偶性又将线性相位FIR滤波器分成四类。

要根据所设计的滤波特性正确选择其中一类。

例如,要设计线性相位低通特性可选择h(n)=h(N-1-n)一类,而不能选h(n)=-h(N-1-n)一类。

验算技术指标是否满足要求,为了计算数字滤波器在频域中的特性,可调用freqz子程序,如果不满足要求,可根据具体情况,调整窗函数类型或长度,直到满足要求为止。

2.2用双线性变换法设计IIR滤波器

脉冲响应不变法的主要缺点是产生频率响应的混叠失真。

这是因为从S平面到Z平面是多值的映射关系所造成的。

为了克服这一缺点,可以采用非线性频率压缩方法,将整个频率轴上的频率范围压缩到-π/T~π/T之间,再用z=esT转换到Z平面上。

也就是说,第一步先将整个S平面压缩映射到S1平面的-π/T~π/T一条横带里;第二步再通过标准变换关系z=es1T将此横带变换到整个Z平面上去。

这样就使S平面与Z平面建立了一一对应的单值关系,消除了多值变换性,也就消除了频谱混叠现象,映射关系如图1所示。

图1双线性变换的映射关系

IIR数字滤波器的最通用的方法是借助于模拟滤波器的设计方法。

模拟滤波器设计已经有了相当成熟的技术和方法,有完整的设计公式,还有比较完整的图表可以查询,因此设计数字滤波器可以充分利用这些丰富的资源来进行。

  为了将S平面的整个虚轴jΩ压缩到S1平面jΩ1轴上的-π/T到π/T段上,可以通过以下的正切变换实现

(1)

式中,T仍是采样间隔。

当Ω1由-π/T经过0变化到π/T时,Ω由-∞经过0变化到+∞,也即映射了整个jΩ轴

再将S1平面通过以下标准变换关系映射到Z平面

z=es1T

从而得到S平面和Z平面的单值映射关系为:

(2)

(3)

(2)与式(3)是S平面与Z平面之间的单值映射关系,这种变换都是两个线性函数之比,因此称为双线性变换。

  对于IIR数字滤波器的设计具体步骤如下:

  

(1)按照一定的规则将给出的数字滤波器的技术指标转换为模拟低通滤波器的技术指标。

  

(2)根据转换后的技术指标设计模拟低通滤波器G(s)(G(s)是低通滤波器的传递函数)。

  (3)再按照一定的规则将G(s)转换成H(z)(H(z)是数字滤波器的传递函数)。

若设计的数字滤波器是低通的,上述的过程可以结束,若设计的是高通、带通或者是带阻滤波器,那么还需要下面的步骤:

  将高通、带通或带阻数字滤波器的技术指标转换为低通模拟滤波器的技术指标,然后设计出低通G(s),再将G(s)转换为H(z)。

Matlab信号工具箱提供了几个直接设计IIR数字滤波器的函数,直接调用这些函数就可以很方便地对滤波器进行设计。

这里选取巴特沃斯法、切比雪夫I、切比雪夫Ⅱ、椭圆法四种方法进行比较。

三、设计步骤

3.1模块设计

模块设计如下图所示。

图2模块设计

3.2GUI面板设计

根据设计的模块,设计面板控件如下:

图3GUI面板设计

其中,在输入方式的电脑录音中,用户可以设定录音的采样频率和录音时间。

均衡器是分为八段,分别是10020050010002000400080001600020000。

均衡器其实是多个带通滤波器输出的信号经过加权后混迭,其通带就是上面的各个数字之间的带宽。

各带通滤波器的输入信号均为原始信号,而不是“串联”地滤波。

设原始输入信号为x(n),第i路的输出信号为yi(n),第i路的权值为ki,均衡器的输出信号为y(n),则有

(1)

对两种输入方式的信号采样分别编写一下程序,保存采样信号,以便后面滤波器或均衡器使用。

导入wav文件:

[handles.yhandles.fsbits]=wavread('语音信号.wav');

nn=length(handles.y);

handles.yy=handles.y(fix(nn/2):

fix(nn*3/4));

axes(handles.axes1);

plot(handles.axes1,handles.yy);

title('滤波前波形');

wavplay(handles.yy,handles.fs);

电脑录音:

handles.fs=handles.soundf;

handles.yy=wavrecord(handles.time*handles.soundf);

wavplay(2*handles.yy,handles.soundf);

plot(handles.axes1,handles.yy);

title('滤波前波形');

3.3用窗函数方法设计滤波器

在MATLAB中,可以用b=fir1(N,Wn,’ftype’,taper)等函数辅助设计FIR数字滤波器。

N代表滤波器阶数;Wn代表滤波器的截止频率(归一化频率),当设计带通和带阻滤波器时,Wn为双元素相量;ftype代表滤波器类型,如’high’高通,’stop’带阻等;taper为窗函数类型,默认为海明窗,窗系数需要实现用窗函数blackman,hamming,hanningchebwin,kaiser产生。

本设计中采用的是kaiser窗进行滤波。

由于滤波器有四种功能,每种滤波所用的参数都不一样,故用下面的一段程序,对用户的选择进行判断,调用相应的程序段,实现相应的滤波功能。

其中低通滤波器的截止频率是3200Hz,带通滤波器的带宽是2000-8000Hz,带阻的带宽也是2000-8000Hz,高通的截止频率是5000Hz。

Y1=fft(handles.yy);

switchhandles.type

case1%低通

fp=3000;fc=3200;As=100;Ap=1;Fs=17000;

wc=2*fc/Fs;wp=2*fp/Fs;

wdel=wc-wp;

beta=0.112*(As-8.7);

N=ceil((As-8)/2.285/wdel);

ws=(wp+wc)/2/pi;

wn=kaiser(N+1,beta);

b=fir1(N,ws,wn);

case2%带通

fp1=2200;fp2=8000;fc1=2000;fc2=8200;As=100;Ap=1;Fs=17000;

wp1=2*fp1/Fs;wc1=2*fc1/Fs;wp2=2*fp2/Fs;wc2=2*fc2/Fs;

wdel=wp1-wc1;

beta=0.112*(As-8.7);

N=ceil((As-8)/2.285/wdel);

ws=[(wp1+wc1)/2/pi,(wp2+wc2)/2/pi];

wn=kaiser(N+1,beta);

b=fir1(N,ws,wn);

case3%带阻

fp1=2200;fp2=8000;fc1=2000;fc2=8200;As=100;Ap=1;Fs=17000;

wp1=2*fp1/Fs;wc1=2*fc1/Fs;wp2=2*fp2/Fs;wc2=2*fc2/Fs;

wdel=wp1-wc1;

beta=0.112*(As-8.7);

N=ceil((As-8)/2.285/wdel);

ws=[(wp1+wc1)/2/pi,(wp2+wc2)/2/pi];

wn=kaiser(N+1,beta);

b=fir1(N,ws,'stop',wn);

case4%高通

fp=4800;fc=5000;As=100;Ap=1;Fs=17000;

wc=2*fc/Fs;wp=2*fp/Fs;

wdel=wc-wp;

beta=0.112*(As-8.7);

N=ceil((As-8)/2.285/wdel);

wn=kaiser(N+1,beta);

ws=(wp+wc)/2/pi;

b=fir1(N,ws,'high',wn);

下面以导入wav文件的输入方式为例,说明程序执行的结果。

1、截止频率是3200Hz的低通滤波器

利用freqz函数查看低通滤波器的响应特性,如下图。

图4低通滤波器相应特性

进行低通滤波后波形及频谱显示:

图5低通滤波后波形和频谱显示

2、带宽是2000-8000Hz的带通滤波器

相应特性:

图6带通滤波器响应特性

进行带通滤波后波形及频谱显示:

图7带通滤波后波形和频谱显示

带阻和高通滤波器结果就不再赘述了,其结果可参看附带程序文件。

3.3用双线性变换法设计均衡器

本设计中的均衡器有八段,分别用八个滚动条来表示各个频率段经过带通滤波后信号幅值的加权值大小(范围是0-10)。

用户可选取四种分别基于巴特沃斯法、切比雪夫I、切比雪夫Ⅱ、椭圆法的均衡器。

用户的选择功能可用一个下拉菜单来实现。

对于滤波器的阶数本应该是有一定的函数进行计算的,本设计中由于各个滤波器的频率大小有很大的跨越,经过计算和实验,得出了满足要求的阶数的范围,为1-4

Y1=fft(handles.yy);

handles.fband=[10020050010002000400080001600020000];

handles.Fs=80000;

num=8;

fband=handles.fband;

y=zeros(size(handles.yy));

N=handles.N;

fori=1:

num;

ifget(handles.popupmenu1,'Value')==1;

[ba]=butter(N,2*fband(i:

i+1)/handles.Fs);

elseifget(handles.popupmenu1,'Value')==2;

[ba]=cheby1(N,0.5,2*fband(i:

i+1)/handles.Fs);

elseifget(handles.popupmenu1,'Value')==3;

[ba]=cheby2(N,20,2*fband(i:

i+1)/handles.Fs);

elseifget(handles.popupmenu1,'Value')==4;

[ba]=ellip(N,0.5,20,2*fband(i:

i+1)/handles.Fs);

else

errordlg('Nofiltertypechosenorfiltertypeerror!

');

end

y=y+handles.k(i)*filter(b,a,handles.yy);

Y2=fft(y);

End

数字均衡器演示结果:

图8均衡器演示结果

 

四、结论

滤波是信号处理的基础,滤波运算是信号处理中的基本运算,滤波器的设计也就相应成为数字信号处理的最基本问题之一。

信号带有噪声或无用信号,滤波器的作用是将这些干扰成分滤除,也就是让特定频段的信号通过达到对信号筛选的效果。

应用MATLAB语言进行FIR数字滤波器的设计仿真时,可根据设计要求随时改变参数,以使滤波器达到最优化。

在经典的滤波器中,通过对IIR数字滤波器的设计研究,应用Butterworth滤波器、ChebysheveI型滤波器、ChebysheveII型滤波器以及椭圆滤波器四种形式,分别用这四种方法设计的均衡器进行比较仿真,得到其不同的仿真特性。

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

当前位置:首页 > 表格模板

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2