实验5 有限冲激响应数字滤波器设计
- 格式:doc
- 大小:166.00 KB
- 文档页数:6
数字信号处理课程设计——有限冲激响应数字滤波器设计一、实验目的:加深对数字滤波器的常用指标和设计过程的理解。
二、实验原理:低通滤波器的常用指标:P P P for H Ω≤Ω+≤Ω≤-,1)(1δδπδ≤Ω≤Ω≤ΩS S for H ,)( 数字滤波器技术指标:通带边缘频率P ω,阻带边缘频率S ω ,通带最大衰减1δ,最小阻带衰减2δ 通带峰值起伏)1(log 201101αδ--=, 最小阻带衰减)(log 202102αδ-=。
数字滤波器有IIR 和FIR 两种类型,它们的特点和设计方法不同。
设计步骤:♦ 给定理想的频率响应函数及技术指标 ♦ 求出理想的单位抽样响应 ♦ 根据阻带衰减选择窗函数 ♦ 根据过渡带宽度确定N 值♦ 求所设计的FIR 滤波器的单位抽样响应 ♦ 计算频率响应,验算指标是否满足要求窗系数需要实现用窗函数blackman (N ), hamming(N),hanning(N)S PP SPassband StopbandTransition bandFig 1 Typical magnitude specification for a digital LPFkais er(N)产生。
wd=boxcar(N);%数组wd返回N点矩形窗函数wd=triang(N);%数组wd返回N点三角窗函数wd=hanning(N);%数组wd返回N点汉宁窗函数wd=hamming(N);%数组wd返回N点汉明窗函数wd=blackman(N);%数组wd返回N点布莱克曼窗函数wd=kaiser(N,beta);%数组wd返回给定β值的N点凯泽窗函数以书上P343例7-1为例wn=hamming(33);%产生窗函数,N=33nn=[0:1:32];alfa=(33-1)/2;hd=sin(0.4*pi*(nn-alfa+eps))./(pi*(nn-alfa+eps));%eps为一个非常小的数,防止出%现零为除数h=hd.*wn'; %hd为一个行向量,wn为一个列向量,需要转置[h1,w1]=freqz(h,1);检验,求其频率响应plot(w1/pi,20*log10(abs(h1)));%通过求对数得到以db为单位的幅度特性axis([0,1,-100,10]);grid;xlabel('归一化频率/pi');ylabel('幅度/dB');三、设计内容:设计FIR 低通滤波器,通带边界频率πω2.0=p ,阻带边界频率πω3.0=s ,阻带衰减2δ不小于50dB 。
无限冲激响应数字滤波器设计实验的结论可能涉及多个方面,包括实验过程、数据分析以及可能的设计改进。
以下是一个可能的结论示例:
在本次无限冲激响应数字滤波器设计实验中,我们通过MATLAB软件进行了滤波器的设计和分析。
实验结果表明,设计的滤波器具有良好的性能,能够有效地滤除输入信号中的噪声。
此外,通过调整滤波器的参数,可以实现不同频率范围的滤波效果。
然而,实验过程中也暴露出了一些问题。
首先,对于某些特定频率的信号,滤波器的响应不够理想,可能需要进一步优化设计。
其次,由于算法的限制,滤波器的计算时间较长,影响了实时处理的效果。
针对这些问题,我们提出了改进方案,包括优化算法和调整滤波器参数等。
通过本次实验,我们深入了解了无限冲激响应数字滤波器的工作原理和设计方法。
实验结果不仅验证了设计的有效性,也为进一步研究提供了有益的参考。
在未来的工作中,我们将继续关注滤波器性能的优化,以更好地满足实际应用的需求。
请注意,以上结论仅为示例,实际实验结论应根据具体实验过程和数据分析进行撰写。
实验5 有限冲激响应数字滤波器设计一 、实验目的:(1) 掌握用窗函数法设计FIR 数字滤波器的原理和方法。
(2) 了解各种窗函数对滤波特性的影响。
二、实验原理:如果所希望的滤波器的理想频率响应函数为)(ωj de H ,则其对应的单位抽样响应为⎰-=ππωωωπd e e H n h k j j d d )(21)(窗函数设计法的基本原理是用有限长单位抽样响应序列h(n)逼近h d (n),由于h d (n)往往是无限长序列,且是非因果的,所以用窗函数w(n)将h d (n)截断,并进行加权处理,得到:)()()(n w n h n h d =h(n)就作为实际设计的FIR 数字滤波器的单位抽样响应序列,其频率响应函数)(ωj e H 为: ∑-=-=10)()(N n nj j e n h e H ωω式中,N 为所选窗函数的长度在MATLAB 中,可以用b=fir1(M,Wc ,’ftype’,taper) 等函数辅助设计FIR 数字滤波器。
M 代表滤波器阶数(单位抽样响应h (n )的长度N=M+1);Wc 代表滤波器的截止频率(对π归一化频率),当设计带通和带阻滤波器时,Wc 为双元素相量;ftype 代表滤波器类型,如’high ’高通,’stop ’带阻等;taper 为窗函数类型,默认为海明窗;窗函数用blackman, hamming, hanning , kaiser 产生。
三、实验内容例1.设计一FIR 低通滤波器,通带截止频率πω2.0=p,通带衰减不大于0.25dB ,阻带截止频率πω3.0=s ,阻带衰减不小于50dB 。
选择一个合适的窗函数,绘出所设计的滤波器的频率响应图。
wp=0.2*pi;ws=0.3*pi;tr_width=ws-wp;M=ceil(6.6*pi/tr_width);n=[0:1:M];wc=(ws+wp)/2;hd=ideal_lp(wc,M);w_ham=(hamming(M))';h=hd.*w_ham;[H,w]=freqz(h,1,1000,'whole');H=(H(1:1:501))';w=(w(1:1:501))';mag=abs(H);db=20*log10((mag+eps)/max(mag));delta_w=2*pi/1000;Rp=-(min(db(1:1:wp/delta_w+1)));disp(['实际通带波动为',num2str(Rp)]);As=-round(max(db(ws/delta_w+1:1:501)));disp(['最小阻带衰减为',num2str(As)]);subplot(2,2,1);stem(n,hd);title('理想抽样响应');axis([0 M-1 -0.1 0.3]);xlabel('n');ylabel('hd(n)');subplot(2,2,2);stem(n,w_ham);title('海明窗');axis([0 M-1 0 1.1]);xlabel('n');ylabel('w(n)');subplot(2,2,3);stem(n,h);title('实际脉冲响应');axis([0 M-1 -0.1 0.3]);xlabel('n');ylabel('h(n)');subplot(2,2,4);plot(w/pi,db);title('衰减幅度');axis([0 1 -100 10]);xlabel('以pi 为单位的频率');ylabel('分贝数');grid;%子程序ideal_lpfunction hd=ideal_lp(wc,M)%理想低通滤波器;hd 为0到M-1之间的理想脉冲响应;wc 为截止频率;M 为理想滤波器的长度alpha=(M-1)/2;n=[0:1:M-1];m=n-alpha+eps; %加一个小数以避免零做除数hd=sin(wc*m)./(pi*m);FIR 滤波器的阶次由过渡带宽度决定,窗函数的选择取决于阻带衰减,海明窗和布莱克曼窗均可提供大于50 dB 的衰减,由于海明窗提供了较窄的过渡带,因此具有较小的阶数。
实验 3 :无限冲激响应滤波器IIR算法实验一、实验目的1. 熟悉IIR 数字滤波器特性;2.掌握IIR数字滤波器的设计过程;3.掌握 IIR 数字滤波器性能测试方法;二、实验设备兼容机操作系统Composer Studio v5三、实验内容1.掌握IIR数字滤波器的基础理论;2.基于MATLAB的IIR数字滤波器参数确定方法;3.采用C语言编程实现低通IIR 滤波器;4.掌握基于CCS的波形观察方法;观察滤波前后的波形变化;四.实验原理分析要求:使用低通巴特沃斯滤波器,设计通带截止频率f p为1kHz、增益为-3dB,阻带截止频率f st为12kHz、衰减为30dB,采样频率f s为25kHz;设计:通带截止频率为: f p = 1000Hz, f st = 12000Hz一、滤波器参数计算模拟预畸变通带截止频率为: w p = 2f s tan2πf p/2f s = 弧度/秒模拟预畸变阻带截止频率为:w st = 2f s tan2πf st/2f s= 弧度/秒N = ,则:一阶巴特沃斯滤波器就足以满足要求;一阶模拟巴特沃斯滤波器的传输函数为: Hs=w p/s+w p=s+由双线性变换定义 s=2f s z-1/z+1得到数字滤波器的传输函数为:因此,差分方程为: yn=n-1+n+n-1;二、基于MATLAB的滤波器参数求解1IIR数字滤波器阶次的选择的MATLAB函数N,w c = buttordw p,w st,Rp,As;N,w c = cheb1ordw p,w st,Rp,As;N,w c = cheb2ordw p,w st,Rp,As;N,w c = ellipordw p,w st,Rp,As;对低通滤波器,必须有w p < w st对高通滤波器,必须有w p > w st对带通滤波器,必须有 w s1 < w p1 < w p2 < w s2对带阻滤波器,必须有 w p1 < w s1 < w s2 < w p22 IIR数字滤波器的设计b,a = butterN,wc,’ftype’b,a = cheby1N,wc,’ftype’b,a = cheby2N,wc,’ftype’b,a = ellipN,wc,’ftype’三、基于C语言编程的IIR 数字滤波器编程实现程序流程图五.实验步骤1.打开 CCS,进入 CCS 的操作环境;2.打开工程,浏览程序:工程目录为C:\ICETEK\ICETEK-DM6437-A\Lab0402_IIR3.点击图标,CCS 会自动编译、链接和下载程序;4.运行程序;可以观察收到的数据;选择菜单 Tools->Graph->Dual Time,进行如下设置:Dual Time 参数设置选择菜单 Tools->Graph->FFT Magnitude, 新建 2 个观察窗口,分别进行如下设置:5.设置断点:在有注释“break point”的语句设置软件断点;使用菜单的 View->Breakpoints,打开断点观察窗口,在刚才设置的断点上右键->Breadk point properties 调出断点的属性设置界面,设置 Action 为 Refresh All windows;则程序每次运行到断点,所有的观察窗口值都会被刷新;其中,输入波形:一个低频正弦波与一个高频正弦波的叠加;输出波形:经过低通滤波后的低频正弦波;6.运行并观察结果:⑴ F8 键运行程序;⑵ 观察“IIR”窗口中时域图形;观察滤波效果;7.退出 CCS六.实验结果输入波形为一个低频率的正弦波与一个高频的余弦波叠加而成;如图:通过观察频域和时域图,得知:输入波形中的低频波形通过了滤波器,而高频部分则被衰减; 六.问题与思考基本任务:1.试微调±改变程序中 f U的取值,观察步长因子μ在自适应算法中所起的作用;2.确定程序中的信号频率,试选用设计不同的信号、噪声组合,基于MATLAB设计不同的类型的滤波器,并基于CCS实现,并观察实验的结果;3.分析实验程序,细化算法流程图;4.结合CCS的使用,分析实验结果提高任务:5.尝试使用信号源生成组合信号,经过A/D采样后,送IIR滤波器实现; 源代码:include""define IIRNUMBER 2 /典范性的滤波器阶数/define SIGNAL1F 1000 /正弦信号频率,代码中没有使用/define SIGNAL2F 4500 /正弦信号频率,代码中没有使用/define SAMPLEF 10000 /采样频率,代码中没有使用/define PIfloat InputWave; /输入给IIR滤波器的信号,每次输出一个点/float IIR; /IIR滤波,每次输出一个点//滤波器的设计采用了案例的结果,应该重新设计/float fBnIIRNUMBER={ , }; /IIR滤波器的分子多项式系数,有错/ float fAnIIRNUMBER={ , }; /IIR滤波器的分母多项式系数/float fXnIIRNUMBER={ }; /IIR滤波器的迭代初始值/float fYnIIRNUMBER={ }; /IIR滤波器的输出值/float fInput,fOutput; /输入点和输出点/float fSignal1,fSignal2; /信号1、2的初始相位/float fStepSignal1,fStepSignal2; /信号1、2的相位步长/float f2PI;int i;float fIn256,fOut256;int nIn,nOut;main{nIn=0; nOut=0;f2PI=2PI;fSignal1=;fSignal2=PI;// fStepSignal1=2PI/30;// fStepSignal2=2PI;fStepSignal1=2PI/50; /信号1的相位步长:f1/fs = 1/50/ fStepSignal2=2PI/; /信号2的相位步长:f1/fs = 1// while 1{fInput=InputWave;fInnIn=fInput;nIn++; nIn%=256;fOutput=IIR;fOutnOut=fOutput;nOut++; / 请在此句上设置软件断点 /if nOut>=256{nOut=0;}}}float InputWave{for i=IIRNUMBER-1;i>0;i--{fXni=fXni-1;fYni=fYni-1;}fXn0=sin fSignal1+cos fSignal2/;fYn0=;fSignal1+=fStepSignal1;if fSignal1>=f2PI fSignal1-=f2PI;fSignal2+=fStepSignal2;if fSignal2>=f2PI fSignal2-=f2PI;return fXn0;}float IIR{float fSum;fSum=;/ yn=n-1+n+n-1 /for i=0;i<IIRNUMBER;i++{fSum+=fXnifAni;fSum+=fYnifBni;}return fSum;}。
DSP技术实验报告实验名称:有限冲击响应滤波器(FIR)算法实验姓名:杨望学号:080404153班级:通信一班时间:6-17南京理工大学紫金学院电光系一、实验目的1、掌握数字滤波器的设计过程2、了解FIR的原理和特性3、熟悉设计FIR数字滤波器的原理和方法二、实验原理数字滤波器滤波器是一个线性系统,它的作用是对输入信号滤除某些频率分量。
FIR滤波器:当分母中a(k)=0,1,…N.其冲激响应h(n)为有限长。
IIR 滤波器:当分母中不全为零,其冲激响应 h(n) 将是无限长其中函数b0,b1,…bM是系统的单位抽样响应h(0),h(1),h(M);当n>M时,h(n)==0,故是有限冲激响应。
▪特性:系统稳定,易实现线性相位,容许设计多通带滤波器;但,好的衰减特性,阶次高▪在数字信号处理应用中往往需要设计线性相位的滤波器,FIR滤波器在保证幅度特性满足技术要求的同时,很容易做到严格的线性相位特性。
▪为了使滤波器满足线性相位条件,要求其单位脉冲响应h(n)为实序列,且满足偶对称或奇对称条件,即:▪h(n)=h(N-1-n)或▪h(n)=-h(N-1-n)▪FIR滤波器不断地对输入的样本x(n)延时后,再做乘法累加算法,将滤波器结果y(n)输出。
▪因此,FIR实际上就是一种乘法累加运算。
本实验中的FIR公式:三、实验内容1、通过MATLAB设计确定FIR滤波器系数;2、DSP初始化;3、A/D采样;4、FIR运算,观察滤波前后的波形变化5、程序代码修改部分for(j=0;j<m;j++){ acc=0;for(i=0;i<n;i++){ y0=x[i]*h[j-i];acc=y0+acc;} //补充语句描述 FIR的算法*y++=(short)(acc>>s);}6、图形部分a. 正弦波滤波前滤波后滤波前滤波后滤波前滤波后四:小结与体会通过本次DSP实验,我掌握了数字滤波的设计的整个过程。
有限冲击响应FIR滤波器的设计一、设计目的1.掌握数字滤波器的设计过程;2.了解FIR的原理和特性;3.熟悉设计FIR数字滤波器的原理和方法;4.学习FIR滤波器的DSP的实现原理;5.学习使用CCS的波形观察窗口观察输入/输出信号波形和频谱变化情况。
二、设计内容1.通过MATLAB来设计一个低通滤波器,对它进行模拟仿真确定FIR滤波器系数;2. 用DSP汇编语言及C语言进行编程,实现FIR运算,对产生的合成信号,滤除信号中高频成分,观察滤波前后波形的变化。
三、总体设计方案(一).设计原理:FIR数字滤波器是一种非递归系统,其传递函数为:H(z)=Y(z)/X(z)=∑b(n)z-n由此可得到系统的差分方程为:y(n)=∑h(i)x(n-i)其冲击响应h(n)是有限长序列,它其实就是滤波器系数向量b(n),N为FIR滤波器的阶数。
为了使滤波器满足线性相位条件,要求其单位脉冲响应h(n)为实序列,且满足偶对称或奇对称条件,即h(n)= h(N-1-n或h(n)= -h(N-1-n)。
这样,当N为偶数时,偶对称线性相位FIR滤波器的差分方程表达式为:y(n)=∑h(i)x(n-i)+x((N-1-n-i)应用MATLAB设计FIR滤波器的主要任务就是根据给定的性能指标设计一个H(z),使其逼近这一指标,进而计算并确定滤波器的系数b(n),再将所设计滤波器的幅频响应、相频响应曲线作为输出,与设计要求进行比较,对设计的滤波器进行优化,设计完成之后将得到FIR滤波器的单位冲击响应序列h(n)的各个参数值。
(二). MATLAB设计FIR滤波器的方法:用MATLAB设计FIR数字滤波器方法很多,最常用的有窗函数法、最优化设计法等。
窗函数设计方法:窗函数设计方法一般是基于直接程序设计法来设计标准频率响应的,可实现加窗线性FIR数字滤波器的设计fir1是用来设计标准频率响应的基于窗函数的FIR滤波器函数,可实现加窗线性FIR的设计,使用fir1函数可设计标准的低通、高通、带通和带阻四种滤波器;fir2是用来设计有任意频率响应的各种加窗线性FIR滤波器函数。
有限冲激响应数字滤波器设计(doc X页)实验5 有限冲激响应数字滤波器设计一、实验目的:1、加深对数字滤波器的常用指标理解。
2、学习数字滤波器的设计方法。
二、实验原理:低通滤波器的常用指标:(1)通带边缘频率;(2)阻带边缘频率;(3)通带起伏;(4)通带峰值起伏,(5)阻带起伏,最小阻带衰减。
三、预习要求1. 在MATLAB中,熟悉函数fir1、kaiserord 、remezord、remez的使用; B = fir1(n,Wn,'high','noscale')设计滤波器;[n,Wn,beta,ftype] = kaiserord(f,a,dev)估计滤波器数;[n,fo,ao,w] = remezord (f,a,dev,fs)计算等波纹滤波器阶数n和加权函数w(ω); B=remez(n,f,a)进行等波纹滤波器的设计。
2. 阅读扩展练习中的实例,学习FIR滤波器的设计方法及其在MATLAB中的实现;3. 给出FIR数字滤波器的冲激响应,绘出它们的幅度和相位频响曲线,讨论它们各自的实现形式和特点。
数字滤波器有IIR和FIR两种类型,它们的特点和设计方法不同。
四、实验内容:利用MATLAB编程,分别用窗函数法和等波纹滤波器法设计两种FIR数字滤波器,指标要求如下:通带边缘频率:,通带峰值起伏:。
阻带边缘频率:,最小阻带衰减:。
(1) 用窗函数法实现:调用函数[n,wn,bta,ftype]=kaiserord(f,a,dev,fs) 参数:f=[0.3 0.45 0.65 0.8]为对应数字频率,,,。
a=[0 1 0]为由 f 指定的各个频带上的幅值向量,一般只有 0 和 1表示;和 f 长度关系为(2*a 的长度)—2=(f 的长度)devs=[0.01 0.1087 0.01]用于指定各个频带输出滤波器的频率响应与其期望幅值之间的最大输出误差或偏差,长度与 a 相等,计算公式:阻带衰减误差= ,通带波动衰减误差=fs 缺省值为 2HZN0=ceil(4.46*pi/Bt(2));B=fir1(N0-1,wc,'bandpass',kaiser(N0,3.384));figure(5)freqz(B,1)title('kaiser window') figure(6)stem(B)title('kaiser window') (2)用等波纹法设计:调用函数[n,fpts,mag,wt]=remezord(f,a,dev) f=[0.3 0.45 0.65 0.8]a=[0 1 0]dev=[0.01 0.1087 0.01] 其含义同函数[n,wn,bta,ftype]=kaiserord(f,a,dev,fs)中的参数相同。
实验四、无限冲激响应(IIR)数字滤波器的设计一、实验目的1、熟悉用双线性变换法设计IIR数字滤波器的原理与方法;掌握数字滤波器的计算机仿真方法。
2、掌握用Matlab软件设计流程。
二、实验设备微型计算机、Matlab7.0教学版三、实验原理数字滤波器可以理解为是一个计算程序或算法,将代表输入信号的数字时间序列转化为代表输出信号的数字时间序列,并在转化过程中,使信号按预定的形式变化。
数字滤波器有多种分类,根据数字滤波器冲击响应的时域特征,可以将数字滤波器分为两种,即无限长冲击响应滤波器(IIR)和有限长冲激响应滤波器(FIR)。
在MATLAB中,可以通过调用simulink中的功能模块,可以构成数字滤波器的仿真框图。
在仿真过程中,双击各个功能模块,随时改变参数,获得不同状态下的仿真结果。
四、实验内容(1)用fdatool设计一个IIR低通滤波器(具体参数不要求)(2)并用simulink 仿真(3)对滤波器输入一个含噪信号并能观察到滤波前后的波形(4)对结果进行分析。
五、实验结果1、Simulink仿真原理图2、Filter参数设置3、滤波效果Scope Scope1Scope2六、实验总结通过这次实验,我熟悉用双线性变换法设计IIR数字滤波器的原理与方法;掌握数字滤波器的计算机仿真方法。
熟悉和了解了simulink仿真的真个过程。
Simulink中各种非常有用的工具箱不仅对于设计IIR数字滤波器非常有用,而且对于整个型号仿真处理具有相当可视化的效果,从仿真的角度看,是达到了技术指标的要求。
Simulink是一个进行动态系统建模、仿真和综合分析的集成软件包。
它可以处理的系统包括:线性、非线性系统:离散、连续及混合系统;单任务、多任务离散时间系统。
淮阴师范学院物理与电子电气工程学院D S P课程设计报告学生姓名许进学号170907032 班级0907专业电子信息工程题目有限冲击响应滤波器(FIR)算法实验指导教师潘建2012 年 5 月一、设计指标1.1课题研究随着集成电路技术的发展,各种新型的大规模和超大规模继承电路不断涌现集成电路技术与计算机技术结合在一起使得对数字信号处理系统功能的要求越来越强。
DSP 技术基于VLSI技术和计算机技术发展起来的一门技术。
用可编程DSP芯片实现数字滤波器可通过修改滤波器的参数十分方便的改变滤波器的特性,因此将通过DSP设计平台来实现FIR。
本课题的研究将为今后设计DSP核心部件的嵌入式系统集成提供技术准备。
1.2研究要求1)掌握用窗函数法设计FIR数字滤波器的原理和方法;2)熟悉线性相位FIR数字滤波器特性;3)了解各种窗函数对滤波特性的影响。
二、总体设计方案2.1设计要求利用C语言在CCS环境中编写一个FIR滤波器程序,并能利用以设计好的滤波器对常用信号进行滤波处理。
2.2 CCS开发环境CCS加速和增强了实时,嵌入信号处理的开发过程,它提供了配置,构建,调试,跟踪和分析程序的功能。
CCS功能如图2.2.1所示,CCS基本开发环境如图2.2.2所示图2.2.1 CCS功能图2.2.2 CCS基本开发环境2.3 设计思路在TMS320C54X系统开发环境CCS下对FIR滤波器的DSP实现原理进行讨论。
利用C语言设计相应的滤波器,通过实验仿真,从输入信号和输出信号的时域和频域曲线可以看出在DSP上实现的FIR滤波器能完成预定的滤波任务。
2.4 设计方框图三、设计原理分析3.1 FIR滤波器的基本原理设h(n)(n=0,1,2…N-1)为滤波器的冲击响应,输入信号x(n),则FIE滤波器就是实现下列差分方程:式(1)是FIR滤波器的差分方程。
FIR滤波器的最主要的特点就是没有反馈电路,因此它是无条件稳定系统。
实验5 有限冲激响应数字滤波器设计
实验目的:加深对数字滤波器的常用指标和设计过程的理解。
实验原理:低通滤波器的常用指标:
P P P for H Ω≤Ω+≤Ω≤-,1)(1δδ
πδ≤Ω≤Ω≤ΩS S for H ,)(
通带边缘频率P Ω,阻带边缘频率S Ω ,通带起伏
P δ,
通带峰值起伏]
)[1(log 2010dB p p δα--=,
阻带起伏s δ,最小阻带衰减])[(log 2010dB s S δα-=。
数字滤波器有IIR 和FIR 两种类型,它们的特点和设计方法不同。
在MATLAB 中,可以用b=fir1(N,Wn,’ftype’,taper) 等函数辅助设计FIR 数字滤波器。
N 代表滤波器阶数;Wn 代表滤波器的截止频率(归一化频率),当设计带通和带阻滤波器时,Wn 为双元素相量;ftype 代表滤波器类型,如’high ’高通,’stop ’带阻等;taper 为窗函数类型,默认为海明窗,窗系数需要实现用窗函数blackman, hamming,hanning chebwin, kaiser 产生。
例1 用凯塞窗设计一FIR 低通滤波器,通带边界频率π3.0=Ωp ,阻带边界频率π5.0=Ωs ,阻带衰减
不小于50dB 。
解 首先由过渡带宽和阻带衰减
来决定凯塞窗的N 和
π2.0=Ω-Ω=∆Ωp s ,
,
S P
P S
Passband Stopband
Transition band
Fig 1 Typical magnitude specification for a digital LPF
上图给出了以上设计的频率特性,(a) 为N=30直接截取的频率特性(b)为凯塞窗设计的频率特性。
凯塞窗设计对应的MATLAB程序为:
wn=kaiser(30,4.55);
nn=[0:1:29];
alfa=(30-1)/2;
hd=sin(0.4*pi*(nn-alfa))./(pi*(nn-alfa));
h=hd.*wn;
[h1,w1]=freqz(h,1);
或者:b = fir1(29,0.4,kaiser(30,4.55));
[h1,w1]=freqz(b,1);
plot(w1/pi,20*log10(abs(h1)));
axis([0,1,-80,10]);
grid;
xlabel('归一化频率/ ') ;
ylabel('幅度/dB') ;
还可以使用[n,Wn,beta,ftype] = kaiserord(f,a,dev)函数来估计滤波器阶数等,得到凯塞窗滤波器:
fcuts = [0.3 0.5]; %归一化频率omega/pi
mags = [1 0];
devs = [0.05 10^(-2.5)];
[n,Wn,beta,ftype] = kaiserord(fcuts,mags,devs); %计算出凯塞窗N,beta的值
hh = fir1(n,Wn,ftype,kaiser(n+1,beta),'noscale');
freqz(hh);
实际中,一般调用MATLAB信号处理工具箱函数remezord来计算等波纹滤波器阶数N和加权函数W(ω),调用函数remez可进行等波纹滤波器的设计,直接求出滤波器系数。
函数remezord中的数组fedge 为通带和阻带边界频率,数组mval是两个边界处的幅值,而数组dev 是通带和阻带的波动,fs是采样频率单位为Hz。
例2 利用雷米兹交替算法设计等波纹滤波器,设计一个线性相位低通FIR数字滤波器,其指标为:通带边界频率f c=800Hz,阻带边界f r=1000Hz,通带波动
=4000Hz。
阻带最小衰减At=40dB,采样频率f
解
在MATLAB中可以用remezord 和remez两个函数设计,其结果如图2,MATLAB程序如下:
fedge=[800 1000];
mval=[1 0];
dev=[0.0559 0.01];
fs=4000;
[N,fpts,mag,wt]=remezord(fedge,mval,dev,fs);
b=remez(N,fpts,mag,wt);
[h,w]=freqz(b,1,256);
plot(w*2000/pi,20*log10(abs(h)));
grid;
xlabel('频率/Hz') ;
ylabel('幅度/dB');
实验内容: 利用MATLAB 编程设计一个数字带通滤波器,指标要求如下:
通带边缘频率:π45.01=ΩP ,π65.02=ΩP ,通带峰值起伏:
]
[1dB p ≤α。
阻带边缘频率:π3.01=ΩS ,π75.02=ΩS ,最小阻带衰减:
][40dB S ≥α。
用窗函数法设计FIR 数字滤波器。
实验要求:
给出FIR 数字滤波器的冲激响应,绘出它们的幅度和相位频响曲线,讨论它们各自的实现形式和特点。
调用函数[n,wn,bta,ftype]=kaiserord (f ,a ,dev ,fs )
参数:f=[0.3 0.45 0.65 0.8]为对应数字频率π3.01=ΩS ,π45.01=ΩP ,
π65.02=ΩP ,,π75.02=ΩS
a=[0 1 0]为由f 指定的各个频带上的幅值向量,一般只有0和1表示;和f 长度关系为(2*a 的长度)—2=(f 的长度)
devs=[0.01 0.1087 0.01]用于指定各个频带输出滤波器的频率响应与其期望幅值之间的最大输出误差或偏差,长度与a 相等,计算公式:阻带衰减误差=
,通带波动衰减误差=
fs 缺省值为2HZ
>> [n,wn,bta,ftype]=kaiserord([0.3 0.45 0.65 0.8],[0 1 0],[0.01 0.1087 0.01]);
>> h1=fir1(n,wn,ftype,kaiser(n+1,bta),'noscale'); >> [hh1,w1]=freqz(h1,1,256); >> figure(1) >> subplot(2,1,1)
>> plot(w1/pi,20*log10(abs(hh1))) >> grid
>> xlabel('归一化频率w');ylabel('幅度/db'); >> subplot(2,1,2) >> plot(w1/pi,angle(hh1)) >> grid
>> xlabel('归一化频率w');ylabel('相位/rad');
滤波器的实现形式及特点
由于一般的滤波器在利用窗函数是其通带波纹和阻带波纹不同(一般为第一个阻带波纹最大)因此,在满足第一个阻带衰减旁瓣时,比其频率高的旁瓣,它们的衰减都大大超出要求。
而根据阻带衰减与项数的近似关系TW
fs
At P N ⨯
=)(可得当阻带衰减越大,所需项数越多。