(整理)数字滤波器的设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模拟滤波器到数字滤波器的转换
一、脉冲响应不变法设计IIR数字滤波器
impinvar
功能:用脉冲响应不变法实现模拟到数字的滤波器变换。
调用格式:
[bd,ad]=impinvar(b,a,Fs);将模拟滤波器系数b,a变换成数字的滤波器系数bd,ad,两者的冲激响应不变。
[bd,ad]=impinvar(b,a);采用Fs的缺省值1Hz.
例:采用脉冲响应不变法设计一个切比雪夫I型数字带通滤波器,要求:通带w p1=0.3pi, W p2=0.7pi, R p=1dB, 阻带w s1=0.1pi, W s2=0.9pi, A s=15dB, 滤波器采样频率为
F s=2000Hz.
Matlab程序:
%数字滤波器指标
w p1=0.3*pi; w p2=0.7*pi;
w s1=0.1*pi; w s2=0.9*pi;
R p=1; A s=15;
%转换为模拟滤波器指标
Fs=2000; T=1/Fs;
Omgp1=wp1*Fs; Omgp2=wp2*Fs; %模拟滤波器的通带截止频率
Omgp=[Omgp1,Omgp2];
Omgs1=ws1*Fs; Omgs2=ws2*Fs; %模拟滤波器的阻带截止频率
Omgs=[Omgs1,Omgs2];
Bw=Omgp2-Omgp1; w0=sqrt(Omgp1*Omgp2); %模拟通带带宽和中心频率
%模拟原型滤波器计算
[n,omgn]=cheb1ord(omgp,Omgs,Rp,As,’s’);
[z0,p0,k0]=cheb1ap(n,Rp); %设计归一化的模拟原型滤波器(zpk模型)
ba1=k0*real(poly(z0)); %求原型滤波器系统函数分子系数b
aa1=real(poly(p0)); %求原型滤波器系统函数分母系数a
[ba,aa]=lp2bp(ba1,aa1,w0,bw); %变换为模拟带通滤波器
%用脉冲响应不变法计算数字滤波器系数
[bd,ad]=impinvar(ba,aa,Fs);
%求数字系统的频率特性
[H,w]=freqz(bd,ad);
dbH=20*log10((abs(H)+eps)/max(abs(H))); %将幅度化为分贝值
%作图
subplot(2,2,3),plot(w/pi,dbH);
axis([0,1,-50,1]); title('实际带通相对幅度');
ylabel('dB');xlabel('数字频率(w/pi)');
set(gca,'Xtick',[0,wp1/pi,ws1/pi,wp2/pi,ws2/pi,1]);
set(gca,'Ytick',[-50,-20,-3,-1]); grid
subplot(2,2,4),plot(w/pi, angle(H)/pi*180);
axis([0,1,-200,200]);title('实际数字带通相位');
set(gca,'Xtick',[ 0,wp1/pi,ws1/pi,wp2/pi,ws2/pi,1]);
set(gca,'Ytick',[-180,-120,0,90,180]);grid
ylabel('\phi');xlabel('数字频率(w/pi)');
二、用双线性变换法设计IIR数字滤波器
bilinear
功能:双线性变换——将s域(模拟域)映射到z域(数字域)的标准方法,将模拟滤波器变换成离散等效滤波器。
调用格式:
1、[numd,dend]=bilinear(num,den,Fs);将模拟域传递函数(tf模型)变换为数字域传递函数,Fs为取样频率。
2、[numd,dend]=bilinear(num,den,Fs,Fp);将模拟域传递函数变换为数字域传递函数,Fs 为取样频率。Fp为通带截止频率。
3、[zd,pd,kd]=bilinear(z,p,k,Fs);将模拟域传递函数(zpk模型)变换为数字域传递函数,Fs为取样频率。
4、[zd,pd,kd]=bilinear(z,p,k,Fs,Fp);将模拟域传递函数变换为数字域传递函数,Fs为取样频率。Fp为通带截止频率。
例:采样双线性变换设计一个巴特沃斯数字低通滤波器,要求:
wp=0.25pi,Rp=1dB,ws=0.4pi,As=15dB.滤波器采样频率Fs=100Hz。
Matlab程序:
%数字滤波器指标
wp=0.25*pi;Rp=1;
ws=0.4*pi;As=15;
%转换为模拟滤波器指标
Fs=100; T=1/Fs;
Omgp=(2/T)*tan(wp/2);
Omgs=(2/T)*tan(ws/2);
%模拟原型滤波器设计
[n,Omgc]=buttord(Omgp,Omgs,Rp,As,’s’);
[z0,p0,k0]=buttap(n); %归一化原型设计(zpk模型)
ba=k0*real(poly(z0)); %原型系统函数分子系数b
aa=real(poly(p0)); %原型系统函数分母系数a
[ba1,aa1]=lp2lp(ba,aa,Omgc);
%以上4行求滤波器系数ba1,aa1的程序,可以由以下一条程序代替
[ba1,aa1]=butter(n,Omgc,’s’);
%用双线性变换计算数字滤波器系数
[bd,ad]=bilinear(ba1,aa1,Fs);
%求数字系统的频率特性
[H,w]=freqz(bd,ad);
dbH=20*log10((abs(H)+eps)/max(abs(H)));
%作图