登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

我的博客

电子信息学习 资料共享

 
 
 

日志

 
 

实验三 用MATLAB设计IIR数字滤波器  

2010-01-24 21:38:16|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 

实验三   用MATLAB设计IIR数字滤波器

一、实验目的

㈠、初步了解MATLAB信号处理工具箱中IIR数字滤波器设计的常用函数。

㈡、学习编写简单的IIR数字滤波器设计程序。

二、实验原理

㈠ IIR模拟滤波器与数字滤波器

IIR数字滤波器的设计以模拟滤波器设计为基础,常用的类型分为巴特沃斯(Butterworth)、切比雪夫(Chebyshev)Ⅰ型、切比雪夫Ⅱ型、贝塞尔(Bessel)、椭圆等多种。在MATLAB信号处理工具箱里,提供了这些类型的IIR数字滤波器设计子函数。(参见Matlab语言在DSP设计中的应用P19-P25)

㈡ IIR数字滤波器的设计计算

例1:已知数据采样频率为1000Hz,现要设计一6阶的巴特沃斯低通滤波器,截止频率为200Hz,求其幅频、相频特性曲线,及滤波器的冲激响应。

   [b,a]=butter(6,200/1000*2);        %Wn=fc/(Fs/2)

freqz(b,a,128,1000);

   

图1(A) 幅频和相频特性曲线

程序运行结果如图7-8-1(A)。若将上述程序改为

    [b,a]=butter(6,200/1000*2);

    impz(b,a);

显示滤波器的冲激响应,如图7-8-1(B)。

图1(B) 滤波器的冲激响应       

例2:设计一个三阶的切比雪夫Ⅰ型数字高通滤波器,已知截止频率Wn=0.4,通带衰减Rp=1db,阻带衰减As=20db。。要求画出其绝对和相对幅频特性曲线。结果如图7-8-2。

                       图例2绝对和相对幅频特性曲线

    wn=0.4;n=3;Rp=1;

    [b,a]=cheby1(n,Rp,wn,'high');

    [db,mag,pha,grd,w]=freqz_m(b,a);

    subplot(2,1,1);plot(w/pi,mag);    %w/pi—--求归一化的数字频率

    axis([0 1 -0.1 1.2]);grid   %[]中分别为横轴的起点、终点、纵轴的起点、终点

    ylabel('|H(jw)|');

    subplot(2,1,2);plot(w/pi,db);

    axis([0 1 -150 10]);grid;

    ylabel('G(db)');

从以上程序中可见,阻带衰减As=20db这一条件并未用上,这一条件可在检查结果时使用。

例3:设计一个三阶切比雪夫Ⅱ型数字带阻滤波器,已知截止频率Wn1=0.25,Wn2=0.75,通带衰减Rp=1db,阻带衰减As=30db。要求画出其相对幅频特性曲线和相频特性曲线。结果如图7-8-3。

  

图例3相对幅频特性曲线和相频特性曲线

wn1=0.25;wn2=0.75;n=3;As=30;

[b,a]=cheby2(n,As,[wn1 wn2],'stop');

[db,mag,pha,grd,w]=freqz_m(b,a);

subplot(2,1,1);plot(w/pi,db);

axis([0,1,-60,+1]);

ylabel('G(db)');grid

subplot(2,1,2);plot(w/pi,pha);

ylabel('Ф(jω)');grid;

㈢ 求解数字滤波器的传递函数

由以上的程序,我们可以求解出数字滤波器传递函数的系数,由此求出数字滤波器的传递函数。例如

将例3中第二条程序的分号(;)去掉,在MATLAB命令窗口将显示:

b =

    0.0860   -0.0000    0.1106    0.0000    0.1106   -0.0000    0.0860

a =

    1.0000    0.0000   -1.2131   -0.0000    0.7496    0.0000   -0.1434

由此,可求出传递函数为

为了输出数字滤波器的参数FS、N、ai、bi参数。因此,在编写程序时,应当把这些参数列写成表,以便编辑成能够与滤波器汇编程序相配合的数据文件。

1、编写能够输出FS、N、ai、bi参数的程序

例题4:设计一个三阶切比雪夫Ⅰ型数字带通滤波器,已知采样频率FS=8KHz,截止频率fpl=1KHz,fph=3KHz,通带衰减Rp=1db,阻带衰减As=20db。要求能够输出FS、N、ai、bi参数的程序。

Fs=8000;fp1=1000;fp2=3000;

n=3;Rp=1;

wn1=fp1/Fs*2;wn2=fp2/Fs*2;

      [b,a]=cheby1(n,Rp,[wn1 wn2]);

           fprintf(' **************************************** \n');

           fprintf('  FS=%g \n',Fs);

           fprintf('  N=%g \n',2*n);     %数字带通滤波器N为模拟滤波器的两倍。

           for k=0:2*n

           fprintf('  b%u',k);

fprintf('=%g \n',[b(k+1)]);    %[b]数组默认从n=1开始。

           end  

           for k=1:2*n

              fprintf('  a%u',k);

               fprintf('=%g \n',[-a(k+1)]);

           end  

           fprintf(' **************************************** \n');

在MATLAB指令窗口,将显示程序运行的结果:

           ****************************************

              FS=8000

              N=6

              b0=0.132141

              b1=0

              b2=-0.396422

              b3=0

              b4=0.396422

              b5=0

              b6=-0.132141

              a1=2.22045e-016

              a2=-0.343193

              a3=-6.10623e-016

              a4=-0.604394

              a5=2.22045e-016

              a6=-0.204075

****************************************

2、建立数据文件

利用MATLAB剪切、编辑功能,将以上结果数据建立一个文本文件(如bp.txt)。

再键入命令:

!iira bp.txt

将产生数据文件firiir.dat。

三、实验任务

㈠、运行例题程序,理解例题中每条程序的意义及功能。

㈡、设计一个3阶的IIR高通数字滤波器,采样频率为8KHz,截止频率为2KHz,通带衰减Rp=1dB,阻带衰减As=20dB。要求

⒈ 用freqz函数设计和观察巴特沃斯数字滤波器的幅频特性和相频特性曲线。

2. 用freqz函数设计和观察巴特沃斯切比雪夫Ⅰ型、切比雪夫Ⅱ型数字滤波器的幅频特性和相频特性曲线。(选作)

3. 用freqz_m函数设计和观察切比雪夫Ⅰ型数字滤波器的绝对和相对幅频特性曲线。(选作)

4. 在2的基础上,设计能够输出FS、N、ai、bi参数的程序。(选作)

 

四、实验设备

微型计算机                        一台

五、实验预习

㈠、仔细阅读实验原理部分,了解MATLAB有关IIR滤波器设计方面的各条函数的意义及使用方法,逐条分析例题程序。

㈡、试根据实验任务编写设计程序。

六、实验报告

列写出通过调试的设计程序及实验数据。

 

 

 

 

 

 

 

 

 

  评论这张
 
阅读(1654)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018