GPS导航第七章

上传人:lis****210 文档编号:132731928 上传时间:2022-08-09 格式:DOCX 页数:26 大小:600.33KB
返回 下载 相关 举报
GPS导航第七章_第1页
第1页 / 共26页
GPS导航第七章_第2页
第2页 / 共26页
GPS导航第七章_第3页
第3页 / 共26页
点击查看更多>>
资源描述
第7章 数字滤波器设计与实现数字滤波器从实现的网络结构或者从单位脉冲响应分类,可以分为有限冲激响应 滤波器 FIR (Finite Impulse Response Digital Filter)和无限冲激响应滤波器 IIR (Infinite Impulse Response Digital Filter )。本章的实验方法是先用MATLAB来设计滤波器,然 后根据其结果在DSP上分别实现FIR和IIR滤波器。7.1有限冲激响应FIR滤波器实验7.1.1实验目的 学习使用MATLAB来设计FIR数字滤波器的原理和方法。 掌握线性相位FIR数字滤波器特性。 进一步学习使用CCS的波形观察窗口观察输入/输出信号波形和频谱变化情 况。7.1.2实验设备 PC 兼容机一台;操作系统为 Windows2000 (或 WindowsNT、Windows98、 WindowsXP); 计算机安装CCS 5000或CCS 3.1。7.1.3实验内容本实验首先根据已知的滤波器参数及其性能用MATLAB来设计一个低通滤波器,并 对它进行模拟仿真得到FIR滤波器的单位冲激响应参数,用DSP汇编语言及C语言进 行编程和仿真。7.1.4实验原理滤波器就是在时间域或频域内,对已知激励产生规定响应的网络,使 其能够从信号中提取有用的信号,抑制并衰减不需要的信号。滤波器的设 计实质上就是对提出的要求给出相应的性能指标,再通过计算,使物理可 实现的实际滤波器频率响应特性逼近给出的频率响应特性。FIR数字滤波 器系统的传递函数为:H(z)=些!豆b(n)z-n(7.1)X “=0由此得到系统的差分方程:y(n) = b(0) * x(n) + b(1) * x(n 一 1) +b(N 一 1) * x(n(N 一 1)(7.2)若FIR数字滤波器的单位冲激响应序列为h(n),它就是滤波器系数向 量b(n)。传统的滤波器分析与设计均使用繁琐的公式计算,改变参数后需 要重新运算,从而在分析与设计滤波器尤其是高阶滤波器时工作量特别大。 这里应用MATLAB设计FIR滤波器的主要任务就是根据给定的性能指标设计 一个H(z),使其逼近这一指标,进而计算并确定滤波器的系数b(n),再将 所设计滤波器的幅频响应、相频响应曲线作为输出,与设计要求进行比较, 对设计的滤波器进行优化。设计完成之后将得到FIR滤波器的单位冲激响 应序列h(n)的各个参数值。7.1.5 FIR滤波器的设计方法FIR滤波器最大的优点就是在满足幅频特性的同时,还可以获得严格的 线性相位特性,这使它在语音处理、图像处理等要求高保真的数字信号处 理中显得十分重要。设计FIR滤波器主要有窗函数法、最优化设计法及约 束最小二乘逼近法等设计方法。用MATLAB设计FIR数字滤波器方法有很多 种,由于篇幅所限,这里只介绍比较常用的窗函数设计方法、最优化设计 法及采用滤波器设计与分析工具FDATool设计法。1. 窗函数设计方法窗函数法一般是基于直接程序设计法来设计标准频率响应的,可实现 加窗线性相位FIR数字滤波器设计。firl是用来设计标准频率响应的基于 窗函数的FIR滤波器函数,可实现加窗线性相位FIR数字滤波器的设计, 使用firl函数可设计标准的低通、高通、带通和带阻四种滤波器;Fir2是 用来设计有任意频率响应的各种加窗FIR滤波器函数。下面在表7-1中说 明firl和fir2两种函数的使用。用它们来设计有任意频率响应的各种加窗FIR滤波器。滤波器系数包含在返回值b中,可表示为:(7.3)b(z)二 b(l) + b(2)z-i HF b(n +1)z-从表8-1可以看出,采用窗函数设计FIR滤波器,当使用Window参数 时,可以用除Hamming窗外的其他窗函数设计出所有四种加窗滤波器。 Window 参数可采用的窗函数有 Boxcar、Hanning、Bar tie tt、Blackman、 Kasier 和 Chebwin 等,其默认为 Hamming 窗。例如,采用Bartlett窗设计带阻滤波器,其语法格式为:b=fir1(n,W W2】,stop,Bartlett (n+1);在使用MATLAB设计FIR滤波器时,除了要用上述介绍的firl和fir2 函数外,还可以使用freqz()和plot()函数,其中freqz()函数可求出 传递函数的幅频响应和相频响应,plot()函数可以绘出滤波器的幅频响应 和相频响应曲线。例7-1设计采用Hamming窗设计一个48阶FIR带通滤波器,通带为 0.35W( Minimum ordiFrequencyF$:12000Design - II帝 Flq EquirippleiOptionDensity factor: |16MagnitudeD 生:iqn Filter |Comoutina Resoonse. done.图7-3利用FDATool滤波器设计与分析工具设计FIR滤波器7.1.6实验步骤1. 实验准备设置软件仿真模式,启动CCS。2. 建立工程建立一个头文件、建立一个汇编源文件、建立一个C源文件和一个命令文件,把 后三个文件添加到工程,在每个文件中输入参考程序中的相应内容,就会得到如图8-4 所示的工程界面。图7-4 FIR滤波器CCS工程界面3. 编译并装载程序4. 设置波形时域观察窗口选择菜单ViewGraphfTime/Frequency,进行如下图7-5所示设置。5. 设置频域观察窗口1) 选择菜单ViewfGraphfTime/Frequency.,进行如下图7-6所示设置。图7-6滤波前频域观察窗口设置2)选择菜单ViewTGraphfTime/Frequency.,进行如下图7-7所示设置。图7-7滤波后频域观察窗口设置6. 设置断点在程序fir.c中,有注释断点的语句上设置软件断点。7. 运行并观察结果1)选择Debug菜单的Animate项,或按F12键运行程序。2)观察Input和Output窗口中的时域波形图,观察滤波效果,见图7-8。图7-8滤波器前(上半部分)、后(下半部分)时域波形图3)用鼠标右键单击Input和Output窗口,选择Proper ties项,设置Display Type为FFT Magitude,再单击OK按钮结束设置。4)观察Output和Input窗口中的频域波形图,理解滤波效果。滤波器前(左图)、 后(右图)频域波形图见图7-9。图7-9滤波器前(左图)、后(右图)频域波形图7.1.6程序清单参考1. S.h头文件程序int BL = 23;int B23 = -417,342,1961,1692,-762,-1003,1676,1115,-3200,-1159, 1033517562,1033-1159厂3200,1115,1676,1003,762,1692,1961,342,4172. fir55c主程序#include s.h/#include stdio.h#include math.h#define signal_1_f 200;输入信号频率/#define signal_2_f 620;输入信号频率/#define signal_sample_f2000;采样频率 /#define pi 3.1415926;#define coff_L 23;滤波器系数长度#define bufer_L 256;int data_inbufer_L;int outbufer_L;int firout;int xcoff_L+1;int k=0;int bufer=bufer_L;extern int fir(int *,int);extern int init(int *,int );extern int outdata(int *,int,int);void inputwave();void main()inputwave();init(x,BL);while(1)x0=data_ink;firout=fir(x,BL);滤波 /outdata(out,firout,bufer);k+;断点、动画运行if ( k=bufer_L)k=0;/void inputwave()输入波形float wt1;float wt2;nt i;for (i=O;i ROMPAGE 0.data ROMPAGE 0.bssRAMPAGE 0.const RAMPAGE 0.sysmem RAM PAGE 0.stack RAMPAGE 0.sysstack*RAMPAGE 0.switch RAMPAGE 0.cinitRAM PAGE0.pinitRAM PAGE0.vectorsVECS PAGE 0.ioportIOPORTPAGE27.2无限冲激响应IIR滤波器实验7.2.1实验目的 学习使用MATLAB来设计IIR数字滤波器的原理和方法。 熟悉IIR数字滤波器特性。进一步学习使用2CS的波形观察窗口观察输/输出信号波形和频谱变化情况。 722实验设备 PC 兼容机一台;操作系统为 Windows2000 (或 WindowsNT、Windows98、 WindowsXP); 计算机安装CCS 5000或CCS 3.1。723实验内容本实验产生合成信号,然后使用低通IIR滤波器,滤除信号中高频信号,并使用 频谱分析法,查看滤波效果。MATLAB仿真后,使用得到的滤波器参数在DSP中实现低 通滤波,并用CCS的频道分析功能查看滤波效果。7.2.4实验原理IIR滤波器与FIR滤波器相比具有相位特性差的缺点,但它的结构简单,运算量 小,具有经济、高效的特点,并且可以用较少的阶数获得很高的选择性,因此也得到 了较为广泛的应用。IIR数字滤波器系统的传递函数为:(7.4)Y (z) b + b z-1 + + b z - n H(z)二=_01n X(z)1 + a z-1 + + a z-N1N725 IIR滤波器的设计1. 利用MATLAB设计函数直接生成IIR滤波器这里我们介绍的滤波器设计方法为巴特沃斯Butterworth滤波器设计和切比雪夫 Chebyshev滤波器设计。butter函数可以设计低通、带通、高通和带阻数字滤波器,其特征可使通带内的 幅度响应最大限度的平坦,但会损失截止频率处的下降斜度,使幅度响应衰减较慢, 因此butter函数主要用于设计通带平坦数字滤波器。如果期望幅度响应下降斜度大、 衰减快,可使用Elliptic (椭圆)或Chebyshev (切比雪夫)滤波器。buttord函数可以在给定滤波器性能的情况下,选择Butterworth数字滤波器的 最小阶数。切比雪夫(Chebyshev)滤波器可分为Chebyshev I型和ChebyshevH型两种类型, 分别具有通带等波纹和阻带等波纹性能。chebyl函数可以设计低通、带通、高通和带 阻Chebyshev I型数字滤波器,其通带内为等波纹,阻带内为单调Chebyshev I型滤 波器的下降斜度比ChebyshevH型大,但其代价是在通带内的波纹较大。cheb1ord函 数可以在给定滤波器性能的情况下,选择 Chebyshev1型数字滤波器的最小阶数, cheb1ord用来选择Chebyshev1型数字滤波器的最小阶数。cheby2函数与cheby1函数基本相同,只是用cheby2所设计的滤波器,其通带内 为单调的,阻带内为等波纹。cheby2函数可以设计低通、带通、高通和带阻ChebyshevH 型数字滤波器。cheb2ord函数与cheby2函数配合使用,可设计出最低阶数的 ChebyshevH型数字滤波器。下面以切比雪夫I型滤波器为例设计一个低通滤波器。本实例首先使用MATLAB 语言设计一个低通IIR滤波器,得到该滤波器的各种参数。例7-3要求设计一个最小阶数的低通滤波器,采样频率fs = 2000 Hz ,通带截 止频率为500 Hz ,阻带的截止频率为600 Hz ,阻带最小衰减为30dB ,通带的最大衰 减为3dB。Wp=500/1000;Ws=600/1000;n,Wn=cheb1ord(Wp,Ws,3,30); /计算在给定滤波器参数条件下所需的最小阶b,a=cheby1(n,3, Wn);/给出滤波器系数freqz(b,a,512,2000);求得的系数为:b = 0.01560.07810.15630.15630.07810.0156a = 1.0000-1.50972.1610-1.82291.0800-0.40832. 采用FDATool设计滤波器FDATool ( Filter Design & Analysis Tool)是MATLAB信号处理工具箱里专用 的滤波 器设计分析工具,MATLAB 6.0以上的版本还专门增加了滤波器设计工具箱 (FilterDesign Toolbox)。FDATool界面为滤波器设计提供了一个交互式的设计环境,用 户可以根据对幅值和零极点图的设置,设计几乎所有的基本的常规滤波器,包括FIR 和IIR的各种设计方法,它们都具有标准的频率带宽结构。下面是应用滤波器设计与分析工具设计同样参数的滤波器,如图8-12所示。FDATool法的参数设定区的参数选项类型介绍可参考实验8.1。具体步骤如下:首先在命令窗口键入FDAtool命令,调出FDAtool界面,打开MATLAB滤波器 设计工具箱中的滤波器设计与分析工具。其次在滤波器设计页面中设置滤波器参数如下:1) 在滤波器类型Filter Type中选择低通Lowpass。2) 在设计方法Design Method中选择IIR, ChebyshevI切比雪夫I型滤波器。3) 频率单位选择Hz,通带fpass设为500Hz,阻带fstop设为600Hz。4) 幅值设定Magnitude Specification,单位选dB,通带波纹Apass设为3dB, 阻带衰减Astop设为40dB。然后单击下方的滤波器设计Design Filter按钮,即可得到所设计的IIR滤波器, 在右上窗口可以看到所设计滤波器的幅频和相频等各种波形。最后在File菜单中选择Export子菜单打开Export对话框,选择输出到Text file, 单击OK按钮,即可将参数输出到指定文件中。Filter Design 4 Analysis Tool 一 untitled.fdz *口问冈File 蚤五 t ArL:dlysi s Targets Vi ew n_indow Help口 / 口昌也更 q 炉况 04 m u o a sii Current Filter InformationI. Store Filter . I0.3927Structure: Direct-Form II, Second-Order SectionsOrder:5Sections:3Stable:Yes-3.063-4.7909-6.5187-8.2466coutn-otnwwBLIdSource:DesignedOOOO-一 ResponseDifferentiatorDesign -liter urdeiO Specify or.J|1Q() Minimum o.-OptionsMatchpassb.二FrequencyMagnitude Units:Chebyshev .: FIREquirippleResponse . done在整个设计过程中,可以对比滤波器幅频相频特性和设计要求,随时调整参数和 滤波器类型,以便得到最佳效果。其它类型FIR滤波器和IIR滤波器也都可以使用FDATool来设计。7.2.6实验步骤1. 实验准备设置软件仿真模式,启动CCS。2. 建立工程建立一个头文件、建立一个汇编源文件、建立一个C源文件和一个命令文件,把 后三个文件添加到工程,在每个文件中输入参考程序中的相应内容,就会得到如图7-13 所示的工程界面。3. 编译并装载程序方法同前面第1章第1.2节。图7-13 IIR滤波器CCS工程界面4. 设置波形时域观察窗口选择菜单ViewfGraphfTime/Frequency.,进行如下图7-14所示设置。7-14滤波前后时域波形观察窗口设置图7-15滤波前频域观察窗口设置5. 设置频域观察窗口1) 选择菜单ViewfGraphTTime/Frequency.,进行如下图7-15所示设置。2) 选择菜单Viewf GraphfTime/Frequency,进行如下图7-16所示设置。图7-16滤波后频域观察窗口设置6. 设置断点 在程序iir.c中,有注释“断点”的语句上设置软件断点。7. 运行并观察结果1)选择Debug菜单的Animate项,或按F12键运行程序。2)观察Input和Output窗口中的时域波形图,观察滤波效果,见图7-17。图7-17滤波器前(上半部分)、后(下半部分)时域波形图3)用鼠标右键单击Input和Output窗口,选择Properties 项,设置Display Type为FFT Magitude,再单击OK按钮结束设置。4)观察Output和Input窗口中的频域波形图,理解滤波效果。滤波器前(左图)、 后(右图)频域波形图见图7-18on outFFT|n| x1.3e+69.8e+5_.已+-3.3e+5-0_250500750992图7-18滤波器前(左图)、后(右图)频域波形图726程序清单参考1.主程序iir55.c/#includestdio.h#include math.h#define signal_1_f 500;#define signal_2_f 10000;#define signal_sample_f 25000;#define pi 3.1415926#define IIRNUMBER_L 2#define bufer L 256/输入信号频率 /输入信号频率/采样频率intN_L=IIRNUMBER_L;intdata_inbufer_L;intoutbufer_L;intxIIRNUMBER_L+1;intyIIRNUMBER_L+1;intk=0;intbufer=bufer_L;intfBnIIRNUMBER_L=0,0x634a;/滤波系数iintfAnIIRNUMBER_L=0xe5c,0xe5c/滤波系数iexternint iir(int *x,int *y,int *fAn,int *fBn,int N_L);/X,Y,A,B,N_Lexternint init(int *,int *,int );externint outdata(int *,int,int);void inputwave();void main()int iirout;inputwave();init(x,y,N_L);while(1)xO=data_ink;iirout=iir(x,y,fAn,fBn,N_L);/滤波outdata(out,iirout,bufer);k+;/断点,动画运行if ( k=bufer_L)k=0;void inputwave()float wt1;float wt2;int i;for (i=O;iRAMPAGE 0.constRAM PAGE 0.sysmemRAM PAGE 0.stackRAM PAGE 0.sysstack RAM PAGE 0.cioRAM PAGE 0.switchRAM PAGE 0.cinitRAM PAGE 0.pinitRAM PAGE 0.vectors VECSAGE 0.ioportIOPORT PAGE 2
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 机械制造 > 机械制造


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!