大连理工大学实验报告
学院(系): 电信 专业: 电子信息工程 班级: 电子1204 姓 名: 梁宇 学号: 201281001 组: ___ 实验时间: 实验室: 实验台: 指导教师签字: 成绩:
实验三、IIR数字滤波器设计与信号滤波
一、实验题目和代码
1. 用双线性变换法设计一个巴特沃斯IIR低通数字滤波器。设计指标参数为:在通带内频率低于0.4*pi 时,最大衰减小于2dB ;在阻带内[0.6*pi, pi] 频率区间上,最小衰减大于15dB 。要求:
(1)用buttord,buttap,zp2tf,lp2lp,bilinear等指令实现 (2)用buttord,butter指令实现
并分别绘制两种设计方法的频响曲线 实验源程序:
% 方法一:用buttord,buttap,zp2tf,lp2lp,bilinear等指令实现 % clc;clear all; close all Rp=2; Rs=15;
wp=0.4*pi; ws=0.6*pi; Fs=1; Wo=wp;
wap=2*Fs*tan(wp/2);was=2*Fs*tan(ws/2); [N,Wn]=buttord(wap,was,Rp,Rs,'s'); % [Z,P,K]=buttap(N); %创建butterworth [b,a]=zp2tf(Z,P,K); % [B,A]=lp2lp(b,a,Wo); %把模拟滤波器原型转换成截至频率为Wn的低通滤波器 % [bz,az]=bilinear(B,A,Fs); % [H,W]=freqz(bz,az); figure
plot(W,abs(H)); grid
xlabel('频率/弧度') ylabel('频率响应幅度') axis([0 pi 0 1.1]) figure
plot(W,20*log10(abs(H))); grid
xlabel('频率/弧度')
ylabel('对数幅频响应/dB') axis([0 pi -700 10]) 实验结果:
频响曲线
对数频响曲线
% 方法二:用buttord,butter指令实现 % clc;clear all; Rp=2; Rs=15;
wp=0.4*pi/pi; ws=0.6*pi/pi; Fs=1; % [N,Wn]=buttord(wp,ws,Rp,Rs);
%用双线性变换法的butter指令直接实现IIR[bz,az]= butter(N,Wn) % [H,W]=freqz(bz,az);
figure
plot(W,abs(H)); grid
xlabel('频率/弧度') ylabel('频率响应幅度') axis([0 pi 0 1.1]) figure
plot(W,20*log10(abs(H))); grid
xlabel('频率/弧度')
ylabel('对数幅频响应/dB') axis([0 pi -700 10]) 实验结果:
频响曲线
对数频响曲线
2.用buttord和butter函数,直接设计一个巴特沃兹高通滤波器,要求通带截止频率为0.6?,通带内衰减不大于1dB,阻带起始频率为0.4?,阻带内衰减不小于15dB,观察其频谱响应的特点。
源程序:
% Word上的第一题用buttord,butter指令直接设计一个巴特沃茨高通滤波器 % clc;clear all; Rp=1; Rs=15;
wp=0.6*pi/pi; ws=0.4*pi/pi; Fs=1; %
[N,Wn]=buttord(wp,ws,Rp,Rs);
%用双线性变换法的butter指令直接实现IIR [bz,az]= butter(N,Wn,'high') % [H,W]=freqz(bz,az); figure
plot(W,abs(H)); grid
xlabel('频率/弧度') ylabel('频率响应幅度') axis([0 pi 0 1.1]) figure
plot(W,20*log10(abs(H))); grid
xlabel('频率/弧度')
ylabel('对数幅频响应/dB') % axis([0 pi -700 10]) axis([0 0.7*pi -250 1]) 实验结果:
频响曲线
对数频响曲线
二、总结、讨论和建议
在本次实验中主要学习了如何运用MATLAB通过双线性变换法和直接设计法设计数字滤波器。本次实验老师上课的讲解很充分,同时给出的例子也很好理解,相对上几次实验来说很简单,只需要输入参数,调用函数即可。需要注意的是设计带通或带阻滤波器的时候滤波器是参数的计算和阶数的匹配。总体来说相对容易,并没有什么大的问题。通过本次实验的学习,学会了如何设计滤波器,同时加深理解了滤波器的原理,为理论课的学习起到了很大的帮助。 参考资料:
[MATLAB从入门到精通].胡晓冬.董辰辉.扫描版