IIR滤波器课程设计数字信号处理课程设计报告.docx

上传人:b****6 文档编号:4332377 上传时间:2022-11-29 格式:DOCX 页数:12 大小:293.87KB
下载 相关 举报
IIR滤波器课程设计数字信号处理课程设计报告.docx_第1页
第1页 / 共12页
IIR滤波器课程设计数字信号处理课程设计报告.docx_第2页
第2页 / 共12页
IIR滤波器课程设计数字信号处理课程设计报告.docx_第3页
第3页 / 共12页
IIR滤波器课程设计数字信号处理课程设计报告.docx_第4页
第4页 / 共12页
IIR滤波器课程设计数字信号处理课程设计报告.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

IIR滤波器课程设计数字信号处理课程设计报告.docx

《IIR滤波器课程设计数字信号处理课程设计报告.docx》由会员分享,可在线阅读,更多相关《IIR滤波器课程设计数字信号处理课程设计报告.docx(12页珍藏版)》请在冰豆网上搜索。

IIR滤波器课程设计数字信号处理课程设计报告.docx

IIR滤波器课程设计数字信号处理课程设计报告

摘要:

数字滤波器在数字信号处理领域中已经得到广泛的应用。

利用MATLAB的数字滤波器设计工具可以快速有效地设计各种IIR数字滤波器,设计简单方便。

在设计过程中可以随时对比设计要求和滤波器特性,并可通过不断调整参数,以使滤波器的设计得到最优化。

本文所设计的IIR滤波器采用间接方法,借助模拟滤波器的设计方法进行的。

其设计步骤是:

先设计过渡模拟滤波器得到系统函数,然后将模拟滤波器系统函数按脉冲响应不变法转换成数字滤波器的系统函数。

滤波器的使用者不仅可以看到相应类型滤波器的频响图和零、极点图,还可以通过音频文件进行功能测试,从而实现滤波器的最优化。

 

关键词:

MATLAB;IIR数字滤波器;脉冲响应不变法;×××

1课程综述

1.1课题的来源和意义

随着信息时代和数字世界的到来,数字信号处理已成为当今一门极其重要的学科和技术领域。

目前数字信号处理在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。

在数字信号处理中起着重要的作用并已获得广泛应用的是数字滤波器,根据其单位冲激响应函数的时域特性可分为两类:

无限冲激响应IIR滤波器和有限冲激响应FIR滤波器。

与FIR滤波器相比,IIR滤波器的实现采用的是递归结构,极点须在单位圆内,在相同设计指标下,实现IIR滤波器的阶次较低,即所用的存储单元少,从而经济效率高。

1.2预期目标

IIR数字滤波器可以通过巴特沃斯、切比雪夫I和切比雪夫II三种类型的模拟滤波器,采用脉冲响应不变法实现IIR数字低通、高通、带通和带阻滤波器;同时,还具有测试功能,滤波器的使用者可以选择音频对滤波器的效果进行测试。

1.3面对的问题及解决问题的关键技术

MATLAB是于1984年由美国MathWorks公司推出,该软件具有使用简单、方便,易编程,语言简练,函数库可任意扩充,采用全新数据类型和面向对象编程技术等特点,有强大的数值分析、矩阵运算、图形绘制、数据处理等功能,因此已被广泛应用在教学、科研和工程设计的各个领域。

随着MATLAB软件的信号处理工具箱的推出,如今MATLAB已经成为信号与信息处理,特别是数字信号处理应用中分析与仿真设计的主要工具。

传统的滤波器分析与设计均使用繁琐的公式计算,改变参数后需要重新运算,从而在分析与设计滤波器尤其是高阶滤波器时工作量特别大,利用MATLAB信号处理工具箱可以快速而有效地实现滤波器的分析、设计与仿真。

2系统分析

2.1涉及的基础知识

滤波器,是指对输入信号起到滤波作用的系统,其时域输入输出关系为:

,假定

的傅里叶变换均存在,则滤波器输入输出的频域关系为

数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数字处理来达到频域滤波的目的。

数字滤波器也是具有一定传输选择特性的数字信号处理装置,其输入、输出均为数字信号,实质上是一个由有限精度算法实现的线性时不变离散系统。

设计IIR滤波器的任务就是寻求一个物理上可实现的系统函数

,使其频率响应满足所希望得到的频域指标,即符合给定的通带截止频率、阻带截止频率、通带最大衰减、阻带最小衰减。

2.1.1三种模拟原型滤波器

1.滤波器的特点:

(1)巴特沃斯滤波器:

从通带中心向两边幅频特性单调下降。

(2)切比雪夫I滤波器:

通带内有等纹幅频特性函数,阻带内有单调下降的幅频特性函数。

(3)切比雪夫II滤波器:

通带内有单调下降的幅频特性函数,阻带内有等纹幅频特性函数。

2.两种低通逼近法

(1)巴特沃斯滤波器低通逼近法

巴特沃斯低通滤波器幅度平方函数定义为

式中,N为正整数,代表滤波器的阶数。

(2)切比雪夫低通逼近法

2.2解决问题的基本思路

数字滤波器按单位脉冲相应h(n)的时域特性可分为无限长脉冲响应IIR滤波器和有限长脉冲响应FIR滤波器。

其中IIR滤波器一般采用递归型的实现结构,其N阶递归型数字滤波器的差分方程为:

(2-1)

系数

至少有一项不为零,说明必须将延时的输出序列反馈回来。

相应的IIR滤波器的系统函数为:

(2-2)

IIR滤波器的系统函数的设计就是确定各系数

或零极点

,A,以使滤波器满足给定的性能要求。

本课题利用模拟滤波器的理论来设计数字滤波器。

首先,设计一个合适的模拟滤波器,然后用脉冲响应不变法变换成满足预定指标的数字滤波器,即从已知的模拟滤波器传递函数

设计数字滤波器的系统函数

脉冲响应不变法是从滤波器的脉冲响应出发,使数字滤波器的单位脉冲响应序列h(n)模仿模拟滤波器的冲激响应

,将

等间隔采样,使h(n)正好等于

的采样值。

(2-3)

再对h(n)求Z变换,即得数字滤波器的系统函数:

(2-4)

具体步骤:

(1)将数字滤波器设计指标转换为相应的模拟滤波器指标。

(2)设计相应的模拟滤波器,得到模拟系统函数

(3)将模拟滤波器系统函数

转换成数字滤波器系统函数

2.3总体方案

1.创建图形化用户界面。

2.编写控件回调函数

在MATLAB的图形用户界面应用程序中,控件主要响应用户的鼠标单击动作。

响应鼠标动作的方法通过编写回调函数来完成。

回调函数是指在界面控件被选中的时候,响应动作的M语言函数。

回调函数主要完成的功能是:

(1)获取发出动作的对象句柄;

(2)根据发出的动作,设置影响的对象属性。

3.编写功能子函数

(1)函数IIR_Createfilter,用于根据设定参数创建数字滤波器。

(2)显示幅度谱函数IIR_DispMag。

(3)显示相位谱函数IIR_DispAngle。

(4)显示零极点图函数IIR_DispZplane。

(5)选择波形文件函数IIR_GetWAVFile。

(6)播放原始波形文件函数IIR_Playorg。

(7)显示幅度谱函数IIR_Dispmod。

2.3功能模块框图

图2.1功能模块框图

3系统设计

3.1算法描述

1.函数IIR_Createfilter():

function[num,den,FsCY,FlagYYY]=IIR_Createfilter()

num=[];

den=[];

FlagYYY=1;

hndl=gcbf;

name_hndl=findobj(hndl,'Tag','PMenu_Fileter');%获取控件句柄

str1_full=get(name_hndl,'String');%获取控件的文本信息

val=get(name_hndl,'Value');%获取组合框选项的索引号

fil_name=str1_full{val};%获取索引号对应的文本

set(name_hndl,'UserData',fil_name);%将文本信息设置到UserData

type_hndl=findobj(hndl,'Tag','PMenu_Fileter_Style');

str2_full=get(type_hndl,'String');

val=get(type_hndl,'Value');

fil_type=str2_full{val};

set(type_hndl,'UserData',fil_type);

pbr_hndl=findobj(hndl,'Tag','P_Rp');%通带最大衰减

val=str2num(get(pbr_hndl,'string'));

set(pbr_hndl,'UserData',val);

sbr_hndl=findobj(hndl,'Tag','S_Rs');%阻带最小衰减

val=str2num(get(sbr_hndl,'string'));

set(sbr_hndl,'UserData',val);

f1_hndl=findobj(hndl,'Tag','CY_Fs');%采样频率

val=str2num(get(f1_hndl,'string'));

set(f1_hndl,'UserData',val);

f2_hndl=findobj(hndl,'Tag','P_Fp');%通带截止频率

val=str2num(get(f2_hndl,'string'));

set(f2_hndl,'UserData',val);

f3_hndl=findobj(hndl,'Tag','S_Fs');%阻带截止频率

val=str2num(get(f3_hndl,'string'));

set(f3_hndl,'UserData',val);

fil_name=get(name_hndl,'UserData');

fil_type=get(type_hndl,'UserData');

Rp=get(pbr_hndl,'UserData');

Rs=get(sbr_hndl,'UserData');

f1=get(f1_hndl,'UserData');

FsCY=f1;

f2=get(f2_hndl,'UserData');

f3=get(f3_hndl,'UserData');

f22_hndl=findobj(hndl,'Tag','P_Fp2');

val=str2num(get(f22_hndl,'string'));

set(f22_hndl,'UserData',val);

f32_hndl=findobj(hndl,'Tag','S_Fs2');

val=str2num(get(f32_hndl,'string'));

set(f32_hndl,'UserData',val);

f22=get(f22_hndl,'UserData');

f32=get(f32_hndl,'UserData');

%模拟滤波器原型为巴特沃斯滤波器

if(strcmp(fil_name,'巴特沃斯'))

%数字低通滤波器的设计

if(strcmp(fil_type,'低通'))

Wp=2*pi*f2/f1;%数字滤波指标

Ws=2*pi*f3/f1;

OmigaP=Wp*f1;%把数字滤波指标转换为模拟滤波指标

OmigaS=Ws*f1;

[nW]=buttord(OmigaP,OmigaS,Rp,Rs,'s');

%计算相应的模拟滤波器阶数N和3dB截止频率W

[BA]=butter(n,W,'s');%计算相应的模拟滤波器系统函数

[num,den]=impinvar(B,A,f1);%用脉冲响应不变法将模拟滤波器转换成数字滤波器

%数字高通滤波器的设计

elseif(strcmp(fil_type,'高通'))

Wp=2*pi*f2/f1;

Ws=2*pi*f3/f1;

OmigaP=Wp*f1;

OmigaS=Ws*f1;

[nW]=buttord(OmigaP,OmigaS,Rp,Rs,'s');

[BA]=butter(n,W,'high','s');

[num,den]=impinvar(B,A,f1);

%数字带通滤波器的设计

elseif(strcmp(fil_type,'带通'))

Wp=2*pi*[f2,f22]/f1;

Ws=2*pi*[f3,f32]/f1;

OmigaP=Wp*f1;

OmigaS=Ws*f1;

[nW]=buttord(OmigaP,OmigaS,Rp,Rs,'s');

[BA]=butter(n,W,'s');

[num,den]=impinvar(B,A,f1);

%数字带阻滤波器的设计

elseif(strcmp(fil_type,'带阻'))

Wp=2*pi*[f2,f22]/f1;

Ws=2*pi*[f3,f32]/f1;

OmigaP=Wp*f1;

OmigaS=Ws*f1;

[nW]=buttord(OmigaP,OmigaS,Rp,Rs,'s');

[BA]=butter(n,W,'stop','s');

[num,den]=impinvar(B,A,f1);

End

%模拟滤波器原型为切比雪夫1滤波器

elseif(strcmp(fil_name,'切比雪夫1'))

%数字低通滤波器的设计

if(strcmp(fil_type,'低通'))

Wp=2*pi*f2/f1;

Ws=2*pi*f3/f1;

OmigaP=Wp*f1;

OmigaS=Ws*f1;

[nW]=cheb1ord(OmigaP,OmigaS,Rp,Rs,'s');

[BA]=cheby1(n,Rp,W,'s');

[num,den]=impinvar(B,A,f1);

%数字高通滤波器的设计

elseif(strcmp(fil_type,'高通'))

Wp=2*pi*f2/f1;

Ws=2*pi*f3/f1;

OmigaP=Wp*f1;

OmigaS=Ws*f1;

[nW]=cheb1ord(OmigaP,OmigaS,Rp,Rs,'s');

[BA]=cheby1(n,Rp,W,'high','s');

[num,den]=impinvar(B,A,f1);

End

%模拟滤波器原型为切比雪夫2滤波器

elseif(strcmp(fil_name,'切比雪夫2'))

%数字低通滤波器的设计

if(strcmp(fil_type,'低通'))

Wp=2*pi*f2/f1;

Ws=2*pi*f3/f1;

OmigaP=Wp*f1;

OmigaS=Ws*f1;

[nW]=cheb2ord(OmigaP,OmigaS,Rp,Rs,'s');

[BA]=cheby2(n,Rp,W,'s');

[num,den]=impinvar(B,A,f1);

%数字高通滤波器的设计

elseif(strcmp(fil_type,'高通'))

Wp=2*pi*f2/f1;

Ws=2*pi*f3/f1;

OmigaP=Wp*f1;

OmigaS=Ws*f1;

[nW]=cheb2ord(OmigaP,OmigaS,Rp,Rs,'s');

[BA]=cheby2(n,Rp,W,'high','s');

[num,den]=impinvar(B,A,f1);

End

3.2详细流程图

 

 

4运行与测试

1.图形化用户界面

2.

图4.1用户界面图

图4.2低通滤波器幅度响应图

 

3.

图4.3低通滤波器相位响应图

图4.4零、极点图

 

致谢

首先,衷心地感谢淮阴工学院、计算机工程学院提供的实践机会,实验室人员提供的舒适的实验环境!

本论文是在老师们的亲切关怀和悉心指导下完成的。

老师们严肃的科学态度,严谨的治学精神,精益求精的工作作风,深深地感染和激励着我。

从课题的选择到项目的最终完成,老师都始终给予我细心地指导和不懈的支持。

在此向老师致以诚挚的谢意和崇高的敬意。

同时,我还要感谢我们小组的其他成员,虽然时间紧迫,我们仍愉快地度过了这短暂的课程设计周,正是由于你们的帮助和支持,我才能克服一个一个的困难喝疑惑,直至本文的顺利完成,特别感谢我的同学,他们对本课题做了不少工作,给予我不少的帮助。

最后,对所参考的文献原作者,以及其他提供帮助的所有人员和机构表示真诚的谢意!

 

参考文献

1高西全,丁玉美.数字信号处理.第3版.西安:

西安电子科技大学出版社,2008

2王世一.数字信号处理.北京:

北京工业学院出版社,1987

3刘波.MATLAB信号处理.北京:

电子工业出版社,2006

4飞思科技产品研发中心MATLAB7辅助信号处理技术与应用.北京:

电子工业出版社,2005

5郑君里,应启珩,杨为理.信号与系统(下册).北京:

电子工业出版社,2003

6伯晓晨.MATLAB工具箱应用指南.北京:

电子工业出版社,2000

 

........忽略此处.......

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

当前位置:首页 > 高中教育 > 初中教育

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

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