1、 燕 山 大 学 课 程 设 计 说 明 书目 录摘要2第一章 滤波器简介31.1 FIR 滤波器简介31.2 窗函数简介31.3 Matlab 简介51.4 窗函数设计 FIR 滤波器的步骤6第二章 滤波器参数设计7第三章 程序设计与仿真73.1 本设计中使用的 Matlab 指燕 山 大 学 课 程 设 计 说 明 书令73.2 程序设计83.3 仿真结果93.4 仿真结果分析12第四章 总结与体会12参考文献13燕 山 大 学 课 程 设 计 说 明 书摘 要数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。根据其单位冲激响应函数的时域特性可
2、分为两类:无限脉冲响应(IIR)滤波器和有限脉冲响应(FIR)滤波器。与 IIR 滤波器相比,FIR 的实现是非递归的,总是稳定的;更重要的是,FIR 滤波器在满足幅频响应要求的同时,可以获得严格的线性相位特性。因此,它在高保真的信号处理,如数字音频、图像处理、数据传输、生物医学等领域得到广泛应用。MATLAB 是“矩阵实验室” (MATrix LABoratoy)的缩写,它是由美国 Mathworks 公司于 1984 年正式推出的,是一种面向科学和工程计算的语言,它集数值分析、矩阵运算、信号处理和图形显示于一体,具有编程效率高、调试手段丰富、扩充能力强等特点。MATLAB的信号处理工具箱具
3、有强大的函数功能,它不仅可以用来设计数字滤波器,还可以使设计达到最忧化,是数字滤波器设计的强有力工具。关键字:数字滤波器、信号处理、窗函数、FIR、MATLAB第一章 滤波器的简介1.1 FIR 滤波器简介燕 山 大 学 课 程 设 计 说 明 书有限长脉冲响应序列 FIR 熟悉滤波器有严格的线性相位,任意的幅度特性,工作稳定的优点。另外,任何非因果有限长序列经过一定的延时都能变成因果的有限长序列,因而FIR 滤波器总能用因果系统来实现,而且 FIR 滤波器由于单位脉冲响应是有限长的,可以用 FFT 算法来计算,从而大大提高了运算效率。设 h ( n) ( n = 0, 1, 2, , N -
4、 1)为滤波器的冲激响应,输入信号为 x ( n) ,则 F IR 滤波器就是要实现下列差分方程: 10)()(kknxhy上式就是 FIR 滤波器的差分方程。FIR 滤波器的最主要的特点是没有反馈回路,因此它是无条件稳定系统。它的单位脉冲响应 h(n)是一个有限长序列。由上面的方程可见, FIR 滤波算法实际上是一种乘法累加运算,它不断地输入样本 x(n) ,经延时做乘法累加,再输出滤波结果。对式(1)进行 Z 变换,整理后可得 FIR 滤波器的传递函数为:10)()(NkkhzHFIR 数字滤波器的设计方法主要有窗函数法和频率抽样设计法,其中窗函数法是基本而有效的设计方法。FIR 数字滤波
5、器的显著特点是线性相位,下面来介绍线性相位的条件。满足第一类线性相位条件为:h(n)是实序列且关于 n=(N-1)/2 偶对称,即h(n)=h(N-n-1)满足第二类线性相位条件为:h(n)是实序列且关于 n=(N-1)/2 奇对称,即h(n)=-h(N-n-1)1.2 窗函数简介窗函数设计法是一种通过截短和计权的方法使无限长非因果序列成为有限长脉冲响应序列的设计方法。就是根据给定的滤波器技术指标,选择滤波器的阶数 N 和合适的窗函数w(n)。即用一个有限长度的窗口函数序列 w(n)来截取一个无限长的序列 hd(n)获得一个有限长序列 h(n)。通常在设计滤波器之前,应该先根据具体的工程应用确
6、定滤波器的技术指标。在大多数实际应用中,数字滤波器常常被用来实现选频操作,所以指标的形式一般为在频燕 山 大 学 课 程 设 计 说 明 书域中以分贝值给出的相对幅度响应和相位响应。常用的窗函数有如下几种:(1) 、矩形窗(Rectangle Window):窗函数为: ()RNwn其频率响应为: 12si/()nNjwjwRWee的主瓣宽度为 4 /N,第一旁瓣比主瓣低 13dB,最小阻带衰减为 21dB。 ()jwRe(2) 、汉宁(Hanning)窗,又称升余弦窗:窗函数为: 2()0.51cos()(Hn RnwN当 N1 时,N1 N,此时,汉宁窗的幅度函数为:2().().()()
7、HnRRRWwWN可见, 是由三部分相加得出的,能量更集中在主瓣中。主瓣宽度为 8 /N,第一旁瓣比主瓣低 31dB,阻带最小衰减为 44dB。(3) 、哈明(Hamming)窗,又称改进的升余弦窗:窗函数为: )(12(46.05)(nwNnwRHm当 N1 时,其幅度响应为:)2()(3.)(.)( NWWRRRHm 这种改进的升余弦窗,可将 99.96%的能量集中在窗谱的主瓣内,与汉宁窗相比,主瓣宽度相同,但第一旁瓣比主瓣低 41dB,最小主瓣衰减为 53dB。(4) 、布莱克曼窗(Blackman):窗函数为: 24()0.45cos0.8cos()11Bl Nnnwn RN幅度函数为
8、:)2()(.)(.)( wWWRRl 14140. NNw燕 山 大 学 课 程 设 计 说 明 书其幅度函数由五部分组成,他们都是移位不同,且幅度也不同的函数,使旁瓣进一步抵消。阻带衰减进一步增加主瓣宽度是矩形窗的 3 倍,即 12 /N。(5)凯塞-贝塞尔(Kaiser-Basel)窗:窗函数为: , 0()kIwn1nN式中, , 是一个可选参数,用来选择主瓣宽度和旁瓣衰减之21()N间的交换关系,一般说来, 越大,过渡带越宽,阻带 越小衰减也越大。选择窗函数要满足以下两个条件:(1)窗谱主瓣尽可能地窄,以获得较陡的过渡带; (2)尽量减少窗谱的最大旁瓣的相对幅度,也就是能量尽量集中于
9、主瓣,使峰肩和纹波减小,就可增多阻带的衰减。这就给窗函数序列的形状和长度选择。表 1 几种常用窗函数的基本参数1.3 Matlab 简介Matlab 是一套用于科学计算的可视化高性能语言与软件环境。它集数值分析、矩阵运算、信号处理和图形显示于一体构成了一个界面友好的用户环境。它的信号处理工具箱包含了各种经典的和现代的数字信号处理技术是一个优秀的算法研究与辅助设计的工具。Matlab 包含的内容非常丰富,功能强大,可以概括为以下几个方面:燕 山 大 学 课 程 设 计 说 明 书a.可以在多种操作系统下运行,如 DOS、Windows 95/98/2000/2000/NT、Compaq Alph
10、a、LinuxSun Solaris 等。b.有超过 500 种的数学、统计、科学及工程方面的函数,使用简单快捷,并且有很强的用户自定义函数的能力。c. 有强大的图形绘制和可视化功能,可以进行视觉数据处理和分析,进行图形、图像的显示及编辑,能够绘制二维、三维图形,使用户可以制作高质量的图形,从而写出图文并茂的文章。d. 有和用其他高级语言(如 C,C+,FORTRAN,JAVA)编写的外部程序相接口的能力,也可把 MATLAB 程序转换成上述高级语言的子程序。e. 有从外部文件及外部硬件设备读入数据的能力。f .有丰富的网络资源,从相关的 Web 网站可以直接获得全套的 MATLAB 联机帮助
11、文件和说明书的电子文档,还可以获得各类技术支持与帮助。g. 有丰富的工具箱toolbox。各个领域的专家学者将众多学科领域中常用的算法编写为一个个子程序,即 m 文件,这些 m 文件包含在一个个工具箱中。其工具箱可以分为两大类,即功能性工具箱和科学性工具箱。功能性工具箱主要用来扩充 MATLAB 的符号计算、图形可视化、建模仿真、文字处理等功能以及与硬件实时交互的功能。学科性工具箱是按学科领域来分类的,如信号处理、控制、通信、神经网络图像处理、系统辨识、鲁棒控制、模糊逻辑、小波等工具箱。1.4 窗函数设计 FIR 滤波器的步骤下面介绍用窗函数设计 FIR 滤波器的步骤1)根据技术要求确定待求滤
12、波器的单位取样响应 ,)(sin)(awhcd21N2) 根据对过渡带及阻带衰减的要求,选择窗函数的形式 w(n),并估计窗口长度 N。3) 计算滤波器的单位取样响应 h(n)=w(n)hd(n)。4) 检验指标是否符合要求。第二章 滤波器的设计思路及参数计算根据任务书中要求,正弦信号的频率为 1/16Hz,白噪声长度为 500,y=fftfilt(h,x)实现燕 山 大 学 课 程 设 计 说 明 书卷积运算。采用窗函数设计滤波器。首先,确定截止频率 c,给出的输入信号为连续信号 x(t)=sin2ft,要对其进行采样,x(n)=sin(2fn/fs),取采样频率 fs=21HZ 时,得到的
13、有限序列 x(n)=sin(2fn/fs)正好有 1.5 个周期显示在窗口内,取截止频率 c=0.007。长度为 N=500。要求对输入信号加入白噪声,利用 Matlab,加入白噪声,带噪信号就是输入滤波器前的信号。调用五种窗函数,比较其幅度特性。滤波器的单位取样响应可以直接调用 Matlab 中的 fir 指令求得。进行 y(n)=h(n)*x(n)卷积运算。输出 y(n),即为滤波后的信号波形。第 3 章 程序设计与仿真本次设计分别应用了矩形窗、三角窗、汉宁窗、布莱克曼窗和凯瑟窗五种窗函数设计FIR低通滤波器,利用Matlab进行滤波器仿真,对带噪信号滤波后的情况进行比对。3.1 本设计中
14、使用的 Matlab 指令Pi 圆周率Plot 线性图形Figure 建立图形,系统自动从 1,2,3,4.来建立图形,数字代表第几幅图形Randn 正态分布的随机数矩阵fir1 窗函数法设计 FIR 滤波器freqz 计算数字滤波器的频率响应hold on 将不同图形在同一坐标系里显示fftfilt 实现卷积运算legend 对显示图形进行字符标注beta 用于控制凯瑟窗的旁瓣宽度,窗函数长度 n 一定时,beta 越大,其频谱的旁 瓣就越小,但主瓣宽度相应的增加;当 beta 一定时,n 发生变化,其旁瓣高 度不会发生变化。b0=boxcar( n1 )、b1 = triang (n1)、
15、b2=hanning (n1)、b3 = blackman (n1)、燕 山 大 学 课 程 设 计 说 明 书b4=kaiser(n1,beta)分别表示调用矩形窗、三角窗、汉宁窗、布莱克曼窗和凯瑟窗。3.2 程序设计 N=500; %设置白噪声的长度n=0:N-1; %设置采样点数f=1/16; fs=21; %设置信号的采样频率为21HZsignal=sin(2*pi*f*n/fs); %设置初始采样正弦信号noise=randn(1,500); %设置噪声信号 长度为500x=signal+noise; %设置带噪信号,为滤波前的输入信号figure(1);plot(n,signal,
16、co); %输出初始的正弦信号波形figure(2);plot(n,x); %输出加噪后的正弦信号波形n1=11; %设置窗函数阶数beta=10;b0=boxcar(n1); %分别表示调用矩形窗、三角形窗、汉宁窗、布b1=triang(n1); 莱克曼窗和凯瑟窗b2=hanning(n1);b3=blackman(n1);b4=kaiser(n1,beta);h0=fir1(n1-1,0.007,b0); %调用fir1函数,窗函数设计截止频率为 0.007的 h1=fir1(n1-1,0.007,b1); 低通滤波器h2=fir1(n1-1,0.007,b2); h3=fir1(n1-1
17、,0.007,b3);h4=fir1(n1-1,0.007,b4);h0,f0=freqz(b0,1,512,2); %计算窗函数的频率响应h1,f1=freqz(b1,1,512,2);h2,f2=freqz(b2,1,512,2);h3,f3=freqz(b3,1,512,2);h4,f4=freqz(b4,1,512,2);figure(3); %绘制窗函数的幅度谱,在不同坐标系内表示subplot( 2,3,1 );plot(f0,20*log10(abs(h0);title(矩形窗);grid;subplot( 2,3,2 );plot(f1,20*log10(abs(h1);tit
18、le(三角窗);grid;subplot( 2,3,3 ); plot(f2,20*log10(abs(h2);燕 山 大 学 课 程 设 计 说 明 书title(汉宁窗);grid;subplot( 2,3,4 );plot(f3,20*log10(abs(h3);title(布莱克曼窗);grid;subplot( 2,3,5 );plot(f4,20*log10(abs(h4);title(凯瑟窗);grid;figure(4); %计算卷积,绘制家噪信号在滤波后的图像,在不 y0=fftfilt(h0,x); 同坐标系内表示y1=fftfilt(h1,x);y2=fftfilt(h2,x);y3=fftfilt(h3,x);y4=fftfilt(h4,x);plot(n,y0/max(y0);title(矩形窗);grid;subplot( 2,3,2 );plot(n,y1/max(y1);title(三角窗);grid; subplot( 2,3,3 );plot(n,y2/max(y2);title(汉宁窗);grid; subplot( 2,3,4 );plot(n,y3/max(y3);title(布莱克曼窗);grid;subplot( 2,3,5 );plot(n,y4/max(y4);title(凯瑟窗);grid;3.3 仿真结果1、输入的正弦信号