用脉冲响应不变法设计IIR 滤波器 MATLAB实现

2022-07-20 14:27:18 浏览数 (1)

一、实验目的 1. 掌握脉冲响应不变法设计IIR 数字滤波器的原理及具体设计方法。 2. 观察用脉冲响应不变法设计的滤波器的时域特性和频域特性,比较所设计的数 字滤波器的和相应模拟滤波器的频域特性,观察脉冲响应不变法设计中产生的 频率混淆现象。 3. 观察参数变化对滤波器性能的影响,通过了解脉冲响应不变法的优缺点,熟悉 该方法的应用范围。 二、实验原理         脉冲响应不变法是实现模拟滤波器数字化的一种直观而常用的方法。它可以保证所设计 的IIR 滤波器的脉冲响应和相应的模拟滤波器的冲激响应在采样点上完全一致。脉冲响应不 变法也由此得名。         一个模拟滤波器的传递函数可以用有理分式表示为:

在脉冲响应不变法设计中模拟频率和数字频率之间的转换关系是线性的.保持脉冲响应不变。因此,这一方法往往用于的同时域数字滤波器设计及响应的模拟系统数字仿真 设计。         MATLAB  中用函数[b, a] = imp _ invr(c, d ,T ) 将模拟滤波器的系数[c],[d]转换为数字滤波器的系数[b],[a]。从而实现模拟到数字的转换。

三、实验内容和步骤

 四.实验报告要求 1.简述实验目的及原理 2.整理好经过运行并证明是正确的实验程序并加上注释。绘出相应的图形。 3.脉冲响应不变法的优缺点各为什么?

代码语言:javascript复制
wp=0.2*pi;ws=0.3*pi;Rp=1;As=15;
T=1;
OmegaP=wp*T;
OmegaS=ws*T;
ep=sqrt(10^(Rp/10)-1); Ripple=sqrt(1/(1 ep*ep)); Attn=1/(10^(As/20));
[cs,ds]=afd_butt(OmegaP,OmegaS,Rp,As);
[b,a]=imp_invr(cs,ds,T);
[C,B,A]=dir2par(b,a)

% plots figure(1);
[db,mag,pha,grd,w]=freqz_m(b,a); subplot(2,2,1);plot(w/pi,mag);title('Magnitude Response') 
xlabel('frequency in pi units');ylabel('|H|'); axis([0,1,0,1.1])
set(gca,'XTickMode','manual','XTick',[0,0.2,0.3,1]); 
set(gca,'YTickMode','manual','YTick',[0,Attn,Ripple,1]);grid 
subplot(2,2,2);plot(w/pi,db);title('Magnitude in dB')
xlabel('frequency in pi units');ylabel('decibels');
axis([0,1,-40,5])
set(gca,'XTickMode','manual','XTick',[0,0.2,0.3,1]);
set(gca,'YTickMode','manual','YTick',[-50,-15,-1,0]);grid
%set(gca,'YTickLabelMode','manual','YTickLabels',['50';'15';'1';'0']) 
subplot(2,2,3);plot(w/pi,pha/pi);title('Phase Response') xlabel('frequency in pi units');ylabel('pi 
units');
axis([0,1,-1,1])
set(gca,'XTickMode','manual','XTick',[0,0.2,0.3,1]);
set(gca,'YTickMode','manual','YTick',[-1,0,1]);grid subplot(2,2,4);plot(w/pi,grd);title('Group 
Delay') xlabel('frequency in pi units');ylabel('Sample'); axis([0,1,0,10])
set(gca,'XTickMode','manual','XTick',[0,0.2,0.3,1]);
set(gca,'YTickMode','manual','YTick',[0:2:10]);grid

0 人点赞