六 数字信号处理实验报告--IIR数字滤波器设计

怀化学院数学系实验报告

实验项目名称: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滤波器。

相关推荐