用双线性法设计一个数字滤波器
1编写双线性交换法设计batterworth低通滤波器的程序,要求通带内频率低于0.2πrad1时,容许幅度误差在1db之内,频率在0.3πrad到πrad之间的阻带衰减大于10db。
2以π/64为采样间隔,在屏幕上打印出数字滤波器的频率区间[0,π]上的幅频响应特性曲线
3在屏幕上打印出H(Z)的分子分母多项式的系数。 源程序代码为
T=64/pi; %设置采样周期为π/64 fs=1/T; %采样频率为周期倒数 wpz=0.2;
wsz=0.3;%设置归一化通带和阻带截止频率 Wp=2*tan(wpz*pi/2); Ws=2*tan(wsz*pi/2); Ap=1;
As=10; %设置通带最大和最小衰减
[N,Wc]=buttord(Wp,Ws,Ap,As,'s'); %调用butter函数确定巴特沃斯滤波器阶数
[B,A]=butter(N,Wc,'s'); %调用butter函数设计巴特沃斯滤波器 W=linspace(0,pi,400*pi); %指定一段频率值 [D,C]=bilinear (B,A,fs); %调用双线性变换法
[Hz,W]=freqz(D,C,W);%返回频率响应 sys=tf(D,C,T) % 给出传输函数H(z) subplot(3,1,1);
plot(W,abs(Hz)/abs(Hz(1))); %绘出巴特沃斯数字低通滤波器的幅频特性曲线 grid on;
title('巴特沃斯数字滤波器1'); xlabel('Frequency/Hz'); ylabel('Magnitude'); subplot(3,1,2);
plot(W,20*log10(abs(Hz))); grid on;
title('巴特沃斯数字滤波器1'); xlabel('Frequency/Hz'); ylabel('dB');
[Nd,wdc]=buttord(wpz,wsz,Ap,As); [Bdz,Adz]=butter(Nd,wdc); [Hzz,W]=freqz(Bdz,Adz,W); subplot(3,1,3);
plot(W,abs(Hzz)/abs(Hzz(1))); grid on;
title('巴特沃斯数字滤波器2');
xlabel('Frequency/Hz'); ylabel('Magnitude'); 其结果为
因篇幅问题不能全部显示,请点此查看更多更全内容