课程设计任务书
学生姓名: 专业班级:
指导教师: 工作单位:
题 目:IIR高通滤波器的设计
初始条件:
具备数字信号处理的理论知识;
具备Matlab编程能力;
熟悉高通滤波器的设计原理;
提供编程所需要的计算机一台
要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1、设计阻带截止频率为200Hz的IIR数字高通滤波器
2、独立编写程序实现
3、完成符合学校要求的设计说明书
时间安排:
一周,其中3天程序设计,2天程序调试
指导教师签名: 年 月 日
系主任(或责任教师)签名: 年 月 日
目 录
摘要... 1
1 设计项目要求与说明... 2
2. 设计思路... 2
2.1 思路分析... 2
2.2 理论计算... 3
3 仿真程序的设计与调试... 4
3.1 数字域指标变换成模拟域指标... 4
3.2 预畸变... 4
3.3 模拟滤波器的设计... 4
3.4 模拟滤波器变成数字滤波器... 6
3.5 理论计算数字滤波器的仿真... 7
4.调试函数总结... 9
5. 总结与体会... 10
参考文献... 11
附录一... 12
本科生课程设计成绩评定表... 15
摘要
数字滤波器是数字信号分析中最重要的组成部分之一,数字滤波与模拟滤波相比,具有精度和稳定性高、系统函数容易改变、灵活性高、不存在阻抗匹配问题、便于大规模集成、可实现多维滤波等优点。
此报告重点介绍了用双线性不变法设计IIR数字高通滤波器的基本流程,总结了模拟滤波器的性能特征。最后以双线性不变法设计了一个高通巴特沃斯IIR数字滤波器,介绍了设计步骤,然后在Matlab环境下进行了仿真与调试,实现了设计目标。
关键词:Matlab 双线性不变法 IIR数字高通滤波器
1 设计项目要求与说明
课题要求设计一个阻带截止频率为200HZ的IIR数字高通滤波器,采用双线性变换法,用巴特沃斯实现,用matlab软件对其进行仿真与调试。本设计先说明用双线性法设计IIR数字滤波器的原理,然后写出了基于matlab的软件设计流程,最后对设计进行调试,分析实验数据。
2. 设计思路
2.1 思路分析
IIR高通滤波器设计的主要方法是先设计一个低通模拟滤波器,然后转换为高通数字滤波器。在设计的全过程的各个步骤,matlab都提供相应的工具箱函数,使得IIR数字滤波器设计变得非常简单。总的来说,我的设计思路主要有以下两种:
1.从模拟低通原型出发,先经频率变换成为高通模拟滤波器;然后进行双线性变换,再由S域变换到Z域,得到高通数字滤波器。
2.先进行双线性变换,将模拟低通滤波器变换成数字低通滤波器;然后在Z域内经数字频率变换为所需类型的数字滤波器。
以上两种思路都可以,我选择了第二种思路进行设计。
另外,由于冲激响应不变法的映射z=esT 不是简单的代数映射,从而使所设计的数字滤波器的幅频响应产生失真,所以冲激响应不变法仅仅适用于基本上是限带的低通或带通滤波器;对于高通或带阻滤波器不宜采用冲激响应不变法,否则要加保护滤波器,滤掉高于折叠频率以上的频率,以避免混叠失真。所以我选择用双线性变换法。
2.2 理论计算
由所给的数字高通滤波器技术指标理论计算所需的模拟低通滤波器的参数。
设计数字高通的要求为:阻带截止频率fs=200HZ,假设阻带内最小衰减为αs,通带截止频率fp, 通带内最大衰减为αP,采样频率为FS。高通滤波器是分段常数的滤波器,双线性变换后,各个分段边缘的临界频率点会发生畸变,为了弥补这种畸变,必须先预畸变,即:
ΩP= tan( ) ΩT= tan( )
wp=2*pi*fp; wt= 2*pi*ft;
将数字滤波器的频率指标{Wk}由wk=(2/T)tan(Wk/2)转换为模拟滤波器的频率指标{wk},高通变低通,再推算所需的低通模型,
;;
;
由上式可计算出N,查表可得模拟低通滤波器的阶数,从而由下式确定模拟高通滤波器的参数。
3 仿真程序的设计与调试
3.1 数字域指标变换成模拟域指标
fp = 300 ; fs= 200;
rp = 1; rs = 20;
wp =fp*2*pi;
ws =fs*2*pi;
FS=1000;
所以:wp=1.885e+003
ws=1.256e+003
3.2 预畸变
Wp=wp/FS; Ws=ws/FS; %先归一化处理
wp2=2*tan(Wp/2)/T; %预畸变
ws2=2*tan(Ws/2)/T;
经过预畸变,可以发现频率变为:
wp2= 2.7528e+003
ws2= 1.4531e+003
3.3 模拟滤波器的设计
%设计模拟滤波器
[N,Wn] = buttord(wp2,ws2,Rp,Rs,'s') %有‘s’,表示模拟Butterworth
[z,p,k]=buttap(N); %创建Buttord低通滤波器原型
[Bap,Aap]=zp2tf(z,p,k); %由零极点转换为传递函数的形式
figure(1)
freqs(Bap,Aap); %画出频率响应
title('模拟低通的频率响应')
[Bbs,Abs]=lp2hp(Bap,Aap,Wn); %模拟低通变高通
figure(2)
freqs(Bbs,Abs);
title('模拟高通的频率响应')
程序执行后可以发现其频率响应为:
图3-1 模拟高通的频率响应
由上图分析可得:其符合高通的一般特征,与预期的效果一样。
而在此条件下,低通原型的波形如下图:
图3-2模拟低通的频率响应
在设计的过程中,涉及一个频率变换的问题,即将模拟低通原型变为高通,其函数及用法如下:
[b,a]=lp2hp(Bap,Aap,Wn);
功能:把模拟滤波器原型转换成截至频率为 Wn 的高通滤波器。
其中,Bap,Aap分别为低通传递函数的分子向量和分母向量;
b,a分别为高通传递函数的分子向量和分母向量。
3.4 模拟滤波器变成数字滤波器
用双线性变换法设计数字滤波器程序为:
[Bbz,Abz]=bilinear(Bbs,Abs,FS);
freqz(Bbz,Abz,512,FS);
程序运行的结果为:如下图:
图3-3 数字高通的频率响应
由于使用的是双线性不变法设计的,其相位为非线性。此处主要是基于要获得严格的频率响应,以及较准确地控制截止频率的位置,故画出了详细的幅频响应,如下图:
图3-4 详细的幅频响应
分析该图可知其在0.4(即200Hz)处的衰减为20dB,而在0.6(即300Hz)处的衰减极小,应小于1dB。由此可见,此设计符合要求设计的参数。在调试的过程中发现:通带衰减越小,阻带衰减越大,滤波器的性能越好,其曲线也越陡峭,选择性越好,当然所用的滤波器阶数也越高。
3.5 理论计算数字滤波器的仿真
wp=0.6*pi;
ws=0.4*pi;
OmegaP=2*1000*tan(wp/2);
OmegaS=2*1000*tan(ws/2);
lamdas=OmegaP/OmegaS;
N=0.5*log10((10.^(20/10)-1)/(10.^(1/10)-1))/log10(lamdas);
%笔算的结果为N=4.6507;故取N=5
%此处为计算高通的传递函数
Wn= 4.8890e+003
az=[0 0 0 0 1];
bz=[1 2.613 3.414,2.613,1];
[Bbs,Abs]=lp2hp(az,bz,Wn);
%用双线性不变法处理
[Bbz,Abz]=bilinear(Bbs,Abs,1000);
其运行结果为:N=5;图形如下:
图3-5 理论计算的滤波器的幅频响应
综上所述,本滤波器以5阶即实现了预期的设计目标:采样频率为1000Hz,通带临界频率fp =300Hz,通带内衰减小于1dB(αp=1);阻带临界频率fs=200Hz,阻带内衰减大于20dB,其在通带内的性能更好。
4.调试函数总结
1. 在使用巴特沃斯函数获取其阶数时发现,调用函数时思路要清,对
[N,Wn] = buttord(wp2,ws2,Rp,Rs,'s'),当有‘s’时,其表示的是模Butterworth滤波器,而缺省时是数字Butterworth滤波器。
2. freqs(Bbs,Abs)与freqz(Bbz,Abz,512,FS)刚开始时分得不是很清楚,后来发现前者是求模拟域频率响应的,而后者是求数字域频率响应的。后者的用法如下:[[h,w]=]freqz(b,a,n[,’whole’])或[h,f]=freqz(b,a,n[,’whole’],Fs)式中,b,a为数字滤波器分子和分母多项式的系数,n为复数频率的响应点数,为整数,最好为2的幂,缺省时为512;Fs为采样频率,单位Hz。如果给定该值,则f位置输出为频率Hz,’whole’表示返回的频率f或w值包含z平面整个单位圆频率矢量,即0~2; h为复频率响应;w为n点频率向量(单位rad);f为n点频率向量(Hz),函数返回值缺少时,则绘制幅频响应和相频响应图
3 [n,Wn]= buttord(Wp,Ws,Rp,Rs)
9 N6 K5 o: N6 Q' 其中Wp和Ws分别是通带和阻带的截止频率,其取值范围为0至1之间,Rp和Rs分别是通带和阻带区的波纹系数。
4 . [b,a]=butter(n,Wn,/ftype/)
其中n代表滤波器阶数,Wn代表滤波器的截止频率,这两个参数可使用buttord函数来确定。buttord函数可在给定滤波器性能的情况下,求出巴特沃斯滤波器的最小阶数n,同时给出对应的截止频率Wn。
5. 总结与体会
在课设之前,我对MATLAB软件,特别是滤波器设计中的函数基本上处于一种模糊状态。通过在学校的电子资源的期刊网上找了些论文资料,借阅图书,一点一滴的自学,以及和同学不断的交流,最后完成了这次课设,对滤波器的设计有了比较清楚的了解。
在课程设计的过程中,我学到了很多东西,比如设计滤波器的一些基本函数的用法,各种模拟滤波器的特性,设计滤波器的一些基本方法。但更为重要的是,我对于解决一个问题的思路更加清晰,找到了属于自己的方法。当然,在设计的过程中,不可能避免的遇到了很多问题,如刚开始思路比较混乱,没有明确的方向。主要是如何将理论计算的模型转换为仿真模型。因为在理论上,将低通转换成高通,一般是变换将高通频率特征转换成低通原型频率特征;而在软件设计中,是对其传递函数进行修改,即变换其z域的表达式,设计初期一直不知道如何将其联系起来。后来发现,其实变换传递函数,也就是变换频率特征,是将变换后的频率代入原低通模型,而后得到高通模型的。
总的来说,这次课程设计让我对MATLAB有了更深刻的了解,对数字滤波器的设计流程有了大致的了解,掌握了一些设计滤波器的基本方法,提高了理论用于实践的能力,掌握了更多专业相关的使用知识与技能。同时,也暴露了我很多的不足,在以后的学习中,将进一步发扬有点,克服缺点。
参考文献
[1]刘泉,阙大顺,郭志强·数字信号处理(第二版)·电子工业出版社·2009
[2] 郭仕剑·MATLAB7.X数字信号处理·人民邮电出版社·20##年
[3] 陈贵明·用MATLAB语言处理数字信号与数字图像·科学出版社·20##年
[4] 王家文·MATLAB7.0图形图像处理·国防工业出版社·20##年
[5] 苏金明·MATLAB图形图像·电子工业出版社·2005
附录一
总程序:
fp = 300 ; fs = 200;
Rp = 1; %通带最大衰减Rp=1dB
Rs = 20; %阻带最小衰减Rs=20dB
wp =fp*2*pi; %把数字域滤波器特征换成模拟滤波器
ws =fs*2*pi;
FS=1000;T=1/FS
Wp=wp/(FS); %归一化数字频率
Ws=ws/(FS);
wp2=2*tan(Wp/2)/T; %预畸变求滤波器通带临界频率
ws2=2*tan(Ws/2)/T; %预畸变求滤波器阻带临界频率
%设计模拟滤波器
[N,Wn] = buttord(wp2,ws2,Rp,Rs,'s')
[z,p,k]=buttap(N); %创建Buttord低通滤波器原型
[Bap,Aap]=zp2tf(z,p,k); %由零极点转换为传递函数的形式
figure(1)
freqs(Bap,Aap); %模拟低通滤波器的频率响应
title('模拟低通的幅度响应和相位响应')
[Bbs,Abs]=lp2hp(Bap,Aap,Wn); %模拟低通变高通
figure(2)
freqs(Bbs,Abs);
title('模拟高通的幅度响应和相位响应')
%用双线性不变法变换成数字滤波器
[Bbz,Abz]=bilinear(Bbs,Abs,FS); %双线性变换
%求其频率响应
figure(3)
freqz(Bbz,Abz,512,FS);
title('数字滤波器的频率响应')
%详细显示数字滤波器的幅频响应
[hw,w]=freqz(Bbz,Abz,512);
figure(4)
plot(w/pi,20*log10(abs(hw)));
grid
axis([0,1,-200,10])
title(' Butterworth Type Highpass Digital Filter')
xlabel('w/pi');
ylabel('幅度(dB)');
%下面将笔算的结果仿真
wp=0.6*pi;
ws=0.4*pi;
OmegaP=2*1000*tan(wp/2);
OmegaS=2*1000*tan(ws/2);
lamdas=OmegaP/OmegaS;
N=0.5*log10((10.^(20/10)-1)/(10.^(1/10)-1))/log10(lamdas);
%笔算的结果为N=4.6507;故取N=5
%此处为计算高通的传递函数
Wn= 4.8890e+003
az=[0 0 0 0 1];
bz=[1 2.613 3.414,2.613,1];
[Bbs,Abs]=lp2hp(az,bz,Wn)
%用双线性不变法处理í
[Bbz,Abz]=bilinear(Bbs,Abs,1000);
%画图
[hw,w]=freqz(Bbz,Abz,512);
figure(5)
plot(w/pi,20*log10(abs(hw)));
grid
axis([0,1,-200,10])
set(gca,'XTickMode','manual','XTick',[0,Ws/(pi),Wp/(pi),1]);grid
set(gca,'YTickMode','manual','YTick',[-200,-Rs,-Rp,10]);grid
title(' 理论计算的滤波器的幅频响应')
xlabel('w/pi');
ylabel('幅度(dB)');
本科生课程设计成绩评定表
指导教师签字:
年 月 日