IIR数字滤波器专业课程设计
IIR数字带通滤波器设计 一、设计内容 1、设计任务: 利用双线性变换法基于MATLAB设计一个IIR带通滤波器。 2、设计要求: 其中带通中心频率为ωp0=0.5π,;通带截止频率ωp1=0.4π,ωp2=0.6π;通带最大衰减αp=3dB;阻带最小衰减αs=15dB;阻带截止频率ωs2=0.7π。 3、设计分析: 数字滤波器是对数字信号实现滤波线性时不变系统。数字滤波实质上是一个运算过程,实现对信号运算处理。输入数字信号(数字序列)经过特定运算转变为输出数字序列,所以,数字滤波器本质上是一个完成特定运算数字计算过程,也能够了解为是一台计算机。描述离散系统输出和输入关系卷积和差分方程只是给数字信号滤波器提供运算规则,使其根据这个规则完成对输入数据处理。时域离散系统频域特征: 其中、分别是数字滤波器输出序列和输入序列频域特征(或称为频谱特征),是数字滤波器单位取样响应频谱,又称为数字滤波器频域响应。输入序列频谱经过滤波后,所以,只要根据输入信号频谱特点和处理信号目标, 合适选择,使得滤波后满足设计要求,这就是数字滤波器滤波原理。 数字滤波器依据其冲激响应函数时域特征,可分为两种,即无限长冲激响应(IIR)数字滤波器和有限长冲激响应(FIR)数字滤波器。IIR 数字滤波器特征是,含有没有限连续时间冲激响应,需要用递归模型 来实现,其差分方程为: 系统函数为: 设计IIR滤波器任务就是寻求一个物理上可实现系统函数H(z),使其频率响应H(z)满足所期望得到频域指标,即符合给定通带截止频率、阻带截止频率、通带衰减系数和阻带衰减系数。 二、设计方法 1、设计步骤: 1) 依据任务,确定性能指标:在设计带通滤波器之前,首先依据工程实际需要确定滤波器技术指标: 带通滤波器阻带边界频率相关中心频率ωp0几何对称,所以ws1=wp0- (ws2-wp0)=0.3π通带截止频率wc1=0.4π,wc2=0.6π;阻带截止频率wr1=0.3π,wr2=0.7π;阻带最小衰减αs=3dB和通带最大衰减αp=15dB; 2) 用Ω=2/T*tan(w/2)对带通数字滤波器H(z)数字边界频率预畸变,得到带通模拟滤波器H(s)边界频率关键是通带截止频率ωp1,ωp2;阻带截止频率ωs1,ωs2转换。 为了计算简便,对双线性变换法通常T=2s 通带截止频率wc1=(2/T)*tan(wp1/2)=tan(0.4π/2)=0.7265 wc2=(2/T)*tan(wp2/2)=tan(0.6π/2)=1.3764 阻带截止频率wr1=(2/T)*tan(ws1/2)=tan(0.3π/2)=0.5095 wr2=(2/T)*tan(ws2/2)=tan(0.7π/2)=1.9626 阻带最小衰减αs=3dB和通带最大衰减αp=15dB; 3) 利用低通到带通频率变换公式λ=(((Ω^2)-(Ω0^2))/(B*Ω))将模拟带通滤波器指标转换为模拟低通滤波器指标。 B=wc2-wc1=0.6499 normwr1=(((wr1^2)-(w0^2))/(B*wr1))=2.236 normwr2=(((wr2^2)-(w0^2))/(B*wr2))=2.236 normwc1=(((wc1^2)-(w0^2))/(B*wc1))=1 normwc2=(((wc2^2)-(w0^2))/(B*wc2))=1 得出,normwc=1,normwr=2.236 模拟低通滤波器指标:normwc=1,normwr=2.236,αp=3dB,αs=15dB 4) 设计模拟低通原型滤波器。用模拟低通滤波器设计方法得到模拟低通滤波器传输函数Ha(s);借助巴特沃斯(Butterworth)滤波器、切比雪夫(Chebyshev)滤波器、椭圆(Cauer)滤波器、贝塞尔(Bessel)滤波器等。 5) 调用lp2bp函数将模拟低通滤波器转化为模拟带通滤波器。 6) 利用双线性变换法将模拟带通滤波器Ha(s)转换成数字带通滤波器H(z)。 2、程序步骤框图: 开始 ↓ 读入数字滤波器技术指标 ↓ 将指标转换成归一化模拟低通滤波器指标 ↓ 设计归一化模拟低通滤波器阶数N和3db截止频率 ↓ 模拟域频率变换,将G(P)变换成模拟带通滤波器H(s) ↓ 用双线性变换法将H(s)转换成数字带通滤波器H(z) ↓ 输入信号后显示相关结果 ↓ 结束 三、MATLAB程序及运行 MATLAB 程序以下: clear wp0=0.5*pi;wp1=0.4*pi;wp2=0.6*pi; Ap=3;ws2=0.7*pi;As=15;T=2; %数字带通滤波器技术指标 ws1=wp0-(ws2-wp0); %计算带通滤波器阻带下截止频率 wc1=(2/T)*tan(wp1/2);wc2=(2/T)*tan(wp2/2); wr1=(2/T)*tan(ws1/2);wr2=(2/T)*tan(ws2/2); w0=(2/T)*tan(wp0/2); %频率预畸变 B=wc2-wc1; %带通滤波器通带宽度 normwr1=(((wr1^2)-(w0^2))/(B*wr1)); normwr2=(((wr2^2)-(w0^2))/(B*wr2)); normwc1=(((wc1^2)-(w0^2))/(B*wc1)); normwc2=(((wc2^2)-(w0^2))/(B*wc2)); %带通到低通频率变换 if abs(normwr1)>abs(normwr2) normwr=abs(normwr2) else normwr=abs(normwr1) end normwc=1; %将指标转换成归一化模拟低通滤波器指标 N=buttord(normwc,normwr,Ap,As, s ); %设计归一化模拟低通滤波器阶数N和3db截止频率 [bLP,aLP]=butter(N,normwc, s ); %计算对应模拟滤波器系统函数G(p) [bBP,aBP]=lp2bp(bLP,aLP,w0,B); %模拟域频率变换,将G(P)变换成模拟带通滤波器H(s) [b,a]=bilinear(bBP,aBP,0.5); %用双线性变换法将H(s)转换成数字带通滤波器H(z) w=linspace (0,2*pi,500); h=freqz(b,a,w); subplot(2,1,2); plot(w,abs(h)); grid on xlabel( w(rad) ) ylabel( |H(jw)| ) title( 频谱函数 ) subplot(2,2,1); plot(w,20*log10(abs(h))); axis([0,2*pi,-120,20]); grid on xlabel( w(rad) ) ylabel( 20*lg|H(jw)|(db) ) titl