怀化学院数学系实验报告
实验项目名称:IIR数字滤波器的设计(1)
指 导 老 师: 欧 卫 华
学
姓
实验项目制定人: 实验项目审批人:
年 月 日
一、实验目的
掌脉冲相应不变法设计IIR-Butterworth数字滤波器的具体设计方法及原理。
二、实验原理与方法
1. 确定数字滤波器的性能指标:通带临界频率fp、阻带临界频率fs;通带内
的最大衰减Ap;阻带内的最小衰减As;采样周期T;
2. 确定相应的数字角频率,ωp=2πfp;ωr=2πfr;
3. 根据Ωp和Ωs计算模拟低通原型滤波器的阶数N,并求得低通原型的传递函
数Ha(s);
4. 用上面的脉冲响应不变法公式代入Ha(s),求出所设计的传递函数H(z);
5. 分析滤波器特性,检查其是否满足指标要求。
三、实验内容及步骤
冲激响应不变法设计数字Butterworth低通滤波器
(1)、模拟滤波器的最小阶数[N,wn]=buttord(wp,ws,rp,rs,'s');
(2)、设计模拟低通滤波器原型,[z,p,k]=buttap(N);
(3)、将零极点形式转换为传递函数形式,[Bap,Aap]=zp2tf(z,p,k);
(4)、进行频率变换,[b,a]=lp2lp(Bap,Aap,wn);
(5)用脉冲相应不变法得到数字滤波器的系统函数[bz,az]=impinvar(b,a,fs);
四、实验范例
用脉冲相应不变法设计一个Butterworth低通数字滤波器,使其特征逼近一个低通Butterworth模拟滤波器的下列性能指标,通带截止频率Wp=2*pi*2000rad/s,通带波纹Rp小于3dB,阻带边界频率为Ws=2*pi*3000rad/s阻带衰减大于15dB,采样频率Fs=10000;z,假设一个信号x(t)=sin(2*pi*f1*t)
+0.5*cos(2*pi*f2*t),其中f1=1000Hz,f2=4000Hz,试将原信号与通过该滤波器的输出信号进行比较。
wp=2000*2*pi;%滤波器截止频率
ws=3000*2*pi;
rp=3;rs=15;%通带波纹和阻带衰减
fs=10000;%采样频率
Nn=128;
[N,wn]=buttord(wp,ws,rp,rs,'s');%模拟滤波器的最小阶数
[z,p,k]=buttap(N);%设计模拟低通滤波器原型
[Bap,Aap]=zp2tf(z,p,k);%将零极点形式转换为传递函数形式
[b,a]=lp2lp(Bap,Aap,wn);%进行频率变换
[bz,az]=impinvar(b,a,fs);%应用脉冲相应不变法得到数字滤波器的系统函数 figure(1);
[h,f]=freqz(bz,az,Nn,fs);%画出数字滤波器的幅频特性和相频特性 subplot(2,1,1),plot(f,20*log10(abs(h)));
xlabel('频率/Hz');ylabel('振幅/dB');grid on;
subplot(2,1,2),plot(f,180/pi*unwrap(angle(h)));
xlabel('频率/Hz');ylabel('振幅/^o');grid on;
figure(2);
f1=1000;f2=4000;%输入信号的频率
N=100;%数据长度
dt=1/fs;n=0:N-1;t=n*dt;%采样间隔和时间序列
x=sin(2*pi*f1*t)+0.5*cos(2*pi*f2*t);%滤波器输入信号
subplot(2,1,1),plot(t,x),title('输入信号')%画出输入信号
%y=filtfilt(bz,az,x);
y1=filter(bz,az,x);%用上面设计的滤波器对输入信号滤波
subplot(2,1,2),plot(t,y1,'r-'),title('输出信号'),xlabel('时间/s'); legend('filter')
五、实验习题
用脉冲相应不变法设计一个Butterworth低通数字滤波器,通带频率为0=<W<=0.2*pi,通带波纹Rp小于1dB,阻带频率为0.3*pi=<W<=pi,阻带衰减大于15dB,采样频率Fs=1000Hz,假设一个信号x(t)=sin(2*pi*f1*t)+0.5*cos(2*pi*f2*t),其中f1=5Hz,f2=30Hz,试将原信号与通过该滤波器的输出信号进行比较。
六,实验结果
第二篇:数字信号处理实验报告——基于MATLAB的数字滤波器设计
实验6基于MATLAB的数字滤波器设计
实验目的:加深对数字滤波器的常用指标和设计过程的理解。
实验原理:低通滤波器的常用指标:
通带边缘频率:,阻带边缘频率: ,通带起伏:,通带峰值起伏: ,阻带起伏:,最小阻带衰减: 。
数字滤波器有IIR和FIR两种类型,它们的特点和设计方法不同。
在MATLAB中,可以用[b,a]=butter(N,Wn)等函数辅助设计IIR数字滤波器, 也可以用b=fir1(N,Wn,’ftype’) 等函数辅助设计FIR数字滤波器。
实验内容: 利用MATLAB编程设计一个数字带通滤波器,指标要求如下:
通带边缘频率:,,通带峰值起伏:。
阻带边缘频率:,,最小阻带衰减: 。
分别用IIR和FIR两种数字滤波器类型进行设计。
实验要求:给出IIR数字滤波器参数和FIR数字滤波器的冲激响应,绘出它们的幅度和相位频响曲线,讨论它们各自的实现形式和特点。
实验步骤:
①Butterworth滤波器的设计(IIR)
>> wp=[0.4*pi,0.6*pi];
>> wr=[0.3*pi,0.7*pi];
>> Ap=1;
>> Ar=40;
>>[N,Wn]=buttord(wp/pi,wr/pi,Ap,Ar)
N =
7
Wn =
0.3854 0.6146
>> [b,a]=butter(N,Wn,'bandpass')
b =
Columns 1 through 12
0.0002 0 -0.0014 0 0.0042 0 -0.0071 0 0.0071 0 -0.0042 0
Columns 13 through 15
0.0014 0 -0.0002
a =
Columns 1 through 12
1.0000 0.0000 3.7738 0.0000 6.5614 0.0000 6.6518 0.0000 4.2030 0.0000 1.6437 0.0000
Columns 13 through 15
0.3666 0.0000 0.0359
>> [H,w]=freqz(b,a);
>> mag=abs(H);
>> plot(w/pi,mag);
>> xlabel('角频率(\Omega)');
>> ylabel('幅度|Ha(j\Omega)|');
>> title('数字butterworth带通滤波器幅度响应|Ha(j\Omega)|');
>> phase=angle(H);
>> plot(w/pi,phase);
>> xlabel('角频率(\Omega)');
>> ylabel('相位');
>> title('数字butterworth带通滤波器相位响应曲线');
>>
②FIR滤波器的设计:
>> wp1 = 0.4*pi; wp2 = 0.6*pi;
>> ws1 = 0.3*pi; ws2 = 0.7*pi;
>> tr_width = min((wp1-ws1),(ws2-wp2))
tr_width =
0.3142
>> M = ceil(6.2*pi/tr_width) + 1
M =
63
>> n=[0:1:M-1];
>> wc1 = (ws1+wp1)/2; wc2 = (wp2+ws2)/2;
>> wc=[wc1/pi,wc2/pi];
>> window= hanning(M);
>> [h1,w]=freqz(window,1);
>> figure(1);
>> subplot(2,1,1)
>> stem(window);
>> axis([0 60 0 1.2]);
>> grid;
>> xlabel('n');
>> title('Hanning窗函数');
>> subplot(2,1,2)
>> plot(w/pi,20*log(abs(h1)/abs(h1(1))));
>> axis([0 1 -350 0]);
>> grid;
>> xlabel('w/\pi');
>> ylabel('幅度(dB)');
>> title('Hanning窗函数的频谱');
>> hn = fir1(M-1,wc, hanning (M));
>> [h2,w]=freqz(hn,1,512);
>> figure(2);
>> subplot(2,1,1)
>> stem(n,hn);
>> axis([0 60 -0.25 0.25]);
>> grid;
>> xlabel('n');
>> ylabel('h(n)');
>> title('Hanning窗函数的单位脉冲响应');
>> subplot(2,1,2)
>> plot(w/pi,20*log(abs(h2)/abs(h2(1))));
>> grid;
>> xlabel('w/\pi');
>> ylabel('幅度(dB)');
>> figure(3);
>> phase=angle(h1);
>> plot(phase);
>> axis([1 pi -1 0]);
>> xlabel('w/\pi');
>> ylabel('线性相位');
>> title('Hanning窗函数相位特性曲线');
>>
实现形式及特点分析:
1. 在本例中,相同的技术指标下,IIR滤波器实现的阶数为N=7,而FIR滤波器的阶数N=63。因此,相同的技术指标,用IIR滤波器实现的阶数远远小于用FIR滤波器的阶数。这是由于IIR滤波器存在着输出对输入的反馈。
2. 从实验中绘制的相位特性曲线可以看出,FIR滤波器可以得到严格的线性相位,而IIR滤波器做不到这一点。IIR滤波器的选择性愈好,其相位的非线性愈严重。因而,如果IIR滤波器要得到线性相位,又要满足滤波的技术要求,必须加全通网络进行相位校正,这同样会大大增加滤波器的阶数。因此,从相位特性考虑,FIR滤波器又优于IIR滤波器。