《数字信号处理课设》由会员分享,可在线阅读,更多相关《数字信号处理课设(31页珍藏版)》请在金锄头文库上搜索。
1、信息科学与工程学院数字信号处理课程设计实验报告课题名称: 简单信号滤波演示系统 学生姓名: 学 号: 专业班级: 指导老师: 实验时间: 2014.10.8 目 录第一章 概述.31.1 FIR、IIR概述.31.2题目要求.3第二章 设计分析.52.1算法分析.52.2 在matlab中实现的分析.6第三章 MATLAB程序实现.83.1 程序主体介绍.83.2 子程序.93.3 程序调试及运行结果.93.4 结果分析及问题分析.16第四章 心得体会.17第五章 参考文献.18第六章 源代码.19第一章 概述1.1 FIR、IIR概述数字滤波器是指输入输出均为数字信号,通过一定的运算关系改变
2、输入信号所含频率成分的相对比例或者滤除某些频率成分的器件。数字滤波器与模拟滤波器相比数字滤波器具有精度高、稳定、体积小、重量小、灵活等特点。主要分为两种:有限脉冲响应FIR和无限脉冲响应IIR。设计滤波器的主要要求有两种,一是幅频特性,一是相频特性。一般的滤波器主要是对幅频特性作出要求,如果对输出相频特性也有要求,就需要用到线性相位滤波器。IIR滤波器的设计主要有两类,一是借助于模拟滤波器设计进行,二是直接在频域或时域中进行设计。FIR滤波器的设计不能借助于模拟滤波器,也有两类设计方法,一是窗函数法,二是频率采样法。还有一种比较有效的方法是切比雪夫等波纹逼近法,需通过计算机辅助进行。1.2题目
3、要求设计一个工作流程如图所示的信号滤波演示系统: 图2 滤波演示图 信号发生器根据信号选择分为两大类: 静态型:直接输入(或从文件读取)测试信号序列; 动态型:输入由多个不同频率正弦信号叠加组合而成的模拟信号公式采样频率(Hz)以及采样点数,动态生成该信号的采样序列,作为测试信号。 频谱分析使用FFT 对产生的测试信号进行频谱分析并展示其幅频、相频特 性,指定需要滤除或保留的频带,通过选择滤波器类型(IIR/FIR),确定对 应的滤波器(低通、高通、带通、带阻)技术指标。 滤波器设计根据IIR/FIR 数字滤波器技术指标设计滤波器,生成相应的滤 波器系数,并展示对应的滤波器幅频(衰减)、相频特
4、性。 IIR DF 设计:使用双线性变换法,可选择滤波器基型(巴特沃斯或切比雪夫型); FIR DF 设计:使用窗口法,可选择窗口类型。 数字滤波根据设计的滤波器系数,对测试信号进行滤波。 IIR DF:要求通过差分方程迭代实现滤波,未知初值置零处理; FIR DF:要求通过快速卷积实现滤波。可以选择使用重叠相加或重叠保留法进行卷积运算,并动态展示卷积运算的详细过程。 输出信号分析展示滤波后信号的幅频与相频特性,分析是否满足滤波要求。 对同一滤波要求,根据输出信号频谱,对比分析各类滤波器的差异。选做部分将一段语音作为测试信号,通过频谱展示和语音播放,对比分析滤波前后语音信号的变化,进一步加深对
5、数字信号处理的理解。第二章 设计分析2.1算法分析此题目的实现可分为三个某块的设计实现:输入信号模块,设计滤波器模块,滤波模块。首先明确各模块间的数据依赖关系:在输入信号模块得到信号后,对信号进行频域分析,从而确定滤波器的相关技术指标,根据滤波器的技术指标与类型,在滤波器设计模块完成滤波器的设计,然后将滤波器的设计结果传递给滤波模块,滤波模块同时接收输入信号,从而通过运算,实现信号的滤波处理。从数据传递关系上分析,滤波模块的实现依赖于其他模块的数据输出,因此放在最后设计。先设计输入模块。因为此设计相对复杂,分模块设计,通过参数传递和接口实现分模块设计即检验,提高程序的稳定性与健壮性。 输入的实
6、现可以有两种方式:静态输入和动态输入。静态输入选择从文本输入数据,将信号取样值以矩阵的形式存放在文本中。采用文件的读取就可以实现,比较容易。动态输入,即输入由一系列频率的正弦信号相加的组成的信号,需要经过采样的,注意在设置采样频率时一定要符合奈奎斯特准则,提高采样点数,增加频谱分辨率。最后输出一采样信号向量,传递给其余两模块。滤波器的设计,通过输入信号的频谱分析,设置滤波器的参数,然后才可以设计滤波器。第一步需要总结设计滤波器需要哪些参数,通过学习可以总结,所有滤波器的参数有四个:通带截止频率、阻带截止频率、通带最大衰减、阻带最小衰减。对滤波器的设计分两类:FIR和IIR,二则所需的函数及设计
7、方法不同。IIR采用借助于模拟滤波器的方式,包括巴特沃斯滤波器和切比雪夫滤波器两种类型。FIR采用窗函数方式,有矩形窗、三角窗、汉明窗、汉宁窗、布莱克曼和凯塞窗。通过调用不同的函数来实现滤波器的设计。特别在实现窗函数滤波器时,各个函数的主要区别是不同的频率采样,可以通过选择结构实现,简化程序。通过滤波器的设计最后可以得到滤波器的系统函数的系数。分析滤波器的幅频特性和相频特性,如果不符合要求重新设定滤波器参数或者换成其他滤波器类型。如果性能符合要求,则将系数传递给滤波模块。滤波模块不调用滤波函数,实现滤波功能根据滤波器类型的不同,有两种方式可以选择,一种是通过差分方程运算,一种是通过线性卷积运算
8、。前者适合对IIR滤波器进行滤波,后者适合对FIR滤波器进行滤波。且线性卷积为实现对长序列的卷积运算,采用重叠相加法,采用动态变化展示运算过程。2.2 在matlab中实现的分析输入模块通过读取文件和直接输入数据运算可以很容易实现。在输入信号确定后,要对其进行频谱分析,从而确定滤波器的参数和类型(低通、高通、带通、带阻),此模块作用也就完成,将数据分别用全局变量传递给下面的模块。设置模拟信号:我采用的测试信号是两个正弦信号叠加而成的信号,信号为 y=sin(2*pi*f1*n*Ts)+sin(2*pi*f2*n*Ts)其中频率f1=30;频率f2=50;频率f3=200;采样频率fs=3000
9、;采样间隔Ts=1/fs;采样点数 N=1024;n=1:N采集模拟信号的程序代码:f1=30;%频率1 f2=50; %频率2f3=200; % 频率3 fs=3000;%采样频率 Ts=1/fs;%采样间隔 N=1024; %采样点数 n=1:N; y=sin(2*pi*f1*n*Ts)+sin(2*pi*f2*n*Ts)+sin(2*pi*f1*n*Ts);%正弦波混合频谱分析:使用FFT对产生的测试信号进行频谱分析并展示其幅频特性与相频特性, 指定需要滤除的频带,通过选择滤波器类型IIR,确定对应的滤波器(低通、 高通)技术指标Fp、Fc、Rp、Rs。滤波器的设计:根据以上技术指标(通
10、带截止频率、通带最大衰减、阻带截止频率、阻带最 小衰减),设计数字滤波器,生成相应的滤波器系数,并画出对应的滤波器 幅频特性与相频特性。分别设计巴特沃斯滤波器、切比雪夫I型滤波器、切 比雪夫II型滤波器、椭圆滤波器、yulewalk滤波器。巴特沃斯和切比雪夫的滤波函数调用为:N,Wc=buttord(wp,ws,rp,rs); N,Wc=cheb1ord(wp,ws,rp,rs);B,A=butter(N,Wc,property); B,A=cheby1(N,rp,Wc,property); property对于低通和高通为,带通high,带阻stop; 窗函数滤波器设计的调用函数:求窗函数的
11、阶数:N=ceil(h*pi)/wdel);%wdel为窗函数的过渡带宽,h对应不同窗函数的值wn=boxcar(N+1); wn=triang(N+1); wn=hanning(N+1); wn=hamming(N+1); wn=blackman(N+1);wn=kaiser(N+1,beta);%bata为kaiser的a参数B=fir1(N,ws,property,wn);property对于低通和高通为,带通high,带阻stop;数字滤波: 根据设计的滤波器系数,对测试信号通过差分方程迭代实现滤波数字滤波,展示滤波后信号的幅频特性与相频特性,分析是否满足滤波要求(对同一滤波要求,对比
12、分析各类滤波器的差异)。需要注意的是,窗函数对滤波参数的使用,需要通过运算得到一窗函数阶数,对通带最大衰减无使用。需要注意FIR和IIR对参数的不同利用。滤波模块:运用差分方程运算的滤波函数,可以用循环调用简单实现。动态展示线性卷积的重叠相加法可以用流程图来说明:第三章 MATLAB程序实现3.1 程序主体介绍此程序界面也是采用GUI,不过是采用图形用户界面开发环境。和第一个对比,布局更加容易,很容易调整界面。但是在一些函数操作行会受一些限制,比如函数参数的传递,目前来说还是采用全局变量才能完成。pushbutton1_Callback(hObject, eventdata, handles)
13、%获得输入信号uipanel11_SelectionChangeFcn(hObject, eventdata, handles)%获取滤波器的设计参数uipanel15_SelectionChangeFcn(hObject, eventdata, handles)%设计滤波器pushbutton4_Callback(hObject, eventdata, handles)%进行滤波以上是一些功能控件,需要注意的是他们的view ballcak属性,对于groupbutton一组按钮,需要选用SelectionChangeFcn,其余选择callback属性即可。另外,handles函数作用为传递的句柄,是一结构体,调用时注意此处。其余和直接用函数创建GUI界面无太大区别。3.2 子程序 3.2.1 IIR滤波器 巴特沃斯滤波器 3.2.2 FI