matlab设计数字滤波器.docx

上传人:b****5 文档编号:7822541 上传时间:2023-01-26 格式:DOCX 页数:13 大小:344.06KB
下载 相关 举报
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

《matlab设计数字滤波器.docx》由会员分享,可在线阅读,更多相关《matlab设计数字滤波器.docx(13页珍藏版)》请在冰豆网上搜索。

matlab设计数字滤波器.docx

matlab设计数字滤波器

如何能得知FIR的系数呢?

假如是一些没有特殊要求的平滑(低通)滤波的场合,可以简单地采用平均值滤波的方法,所谓平均值滤波,即各个系数相等。

设平均值滤波器的阶数是N,则可以取bn=1/N。

实际使用时,只要每个系数相等即可,不必一定等于1/N。

假如面对一些对通频带、截止频率、阶数有特殊要求的场合,有两种方法,一种是根据系数计算步骤(可参考FundamentalsofDigitalSignalProcessing,JoyceVandeVegte),二是用Matlab的Fdatool工具进行滤波器设计。

选择第二种方法明显的有优越性。

关于fdatool的使用,Matlab有提供详细的指导,在Matlab命令行输入helpfdatool,再点入docfdatool即可查看。

>>helpfdatool

FDATOOLFilterDesign&AnalysisTool.

FDATOOLlaunchestheFilterDesign&AnalysisTool(FDATool).

FDAToolisaGraphicalUserInterface(GUI)thatallowsyouto

designorimport,andanalyzedigitalFIRandIIRfilters.

IftheFilterDesignToolboxisinstalled,FDAToolseamlessly

integratesadvancedfilterdesignmethodsandtheabilityto

quantizefilters.

SeealsoFVTOOL,SPTOOL.

>>docfdatool

Toolbox下的FilterDesign

                                                                                           图1Fdatool设计滤波器  

图2冲激响应

图3滤波器系数

这些系数是按下DesignFilter后自动生成的。

对于FIR,它只有Numerator,即分子。

这些系数表示的就是这个滤波器的系统函数的分子中各项的系数,也就是差分方程里面的b系数。

这些系数可以导出成C语言的头文件,这需要按下菜单栏的Targets,选择GenerateCheader,然后弹出如下窗口,作出相应的选择后按下Generate即可,生成的头文件中的系数可以以常系数数组的方式烧入DSP处理器的Flash中。

图4生成C头文件

数字滤波器的Matlab实现

数字滤波器在音频处理领域也显示出相当的作用,最直观的一个例子是数字音频效果器。

比如要用数字的方式产生延时效果,其原理框图如下:

图5延时系统

它的表达式是:

y[n]=G2*x[n]+G1*c[n]

c[n]=x[n-k]+G3*c[n-k]

用对G1、G2、G3分别赋值0.8、0.8和0.8后,用Matlab的绘图功能画出其幅频和相频响应如下:

图6延时系统额频率响应

其中蓝色部分是幅频响应,绿色部分是相频响应,可见梳状滤波器的特点是幅频响应是一个个尖峰。

在时域里,梳状滤波器对音频的作用是产生延时效果,如下图所示。

图7对音频ding.wav延时处理的结果

在延时器的基础上,可以构建混响器。

混响系统是由四个梳状滤波器并联后再串联一个全通滤波器构成的,G1和G2同样是衰减系数。

事实上,混响效果系统可以并联更加多的梳状滤波器。

梳状滤波器的延时参数设置是比较讲究的,因为如果延时参数太大,回声会太过分散(回声密度太小)从而会听出分立的回声的效果,影响了混响系统的平滑性;延时参数太小的话,梳状滤波器频率响应的尖锋就比较分散(象回声效果的第一个图),会产生一些比较难听的高音。

                                                                                                                                      

图9混响系统

所以延时参数的选择最好是在30到40ms左右,具体的值要根据采样频率而定,并且每个梳状滤波器的延时参数必须是不可公约的,因为如果参数可以公约,频率响应的尖峰会相互抵消一部分从而影响混响系统的质量。

全通滤波器的幅频响应是恒定值但相频响应不是线性的相位响应。

所以信号经过全通滤波器各频率的相对相位会发生一定改变,在时域里产生一种涂抹的效果。

下面是实现混响效果的程序片段,由于混响效果的运算量比较大,所以必须用FFT方法才能使运算在比较短的时间里面完成。

以下是Matlab实现混响系统的程序片段,大家要注意Matlab用于构建滤波器的函数dfilt、产生单位脉冲响应的函数impz、用于快速傅里叶变换的函数fft和用于快速傅里叶反变换的函数ifft,它们的具体用法可以查看Matlab帮助文档,里面有非常详细的描述。

%ReverbEffect

hd_1=dfilt.df1(b1,a1);%fourcombfilters

hd_2=dfilt.df1(b2,a2);

hd_3=dfilt.df1(b3,a3);

hd_4=dfilt.df1(b4,a4);

hd_5=dfilt.allpass(c);

hd_comb=dfilt.parallel(hd_1,hd_2,hd_3,hd_4);%hdistheReverbfilter.payattentionthatitisparallel

hd=dfilt.cascade(hd_comb,hd_5);

imp_res=impz(hd,length_input);%impuleresponseofhd

imp_res=imp_res';

%actffttothehdandtheinput,timesthemandinversefft

fr_hd=fft(decay_wet*imp_res,length_input);

ifchannel==1%monosound

fr_input=fft(decay_dry*x,length_input);

fr_output=fr_hd.*fr_input;

z=ifft(fr_output,length_input);

elseifchannel==2%stereosound

fr_hd(2,:

)=fr_hd;

fr_input=fft(decay_dry*x,length_input,2);

fr_output=fr_hd.*fr_input;

z=ifft(fr_output,length_input,2);

end

下面是梳状滤波器延时量100左右的混响系统频率响应:

图10混响系统频率响应

下面是音频信号混响前和混响后的对比图

图11对Reverb_effect.wav的混响处理

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

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1