一.模拟原型滤波器设计
1、模拟滤波器
输入信号和输出信号均为连续信号,冲激响应也是连续的滤波器,称为模拟滤波器。
模拟滤波器从功能上可以分为低通、高通、带通、带阻以及全通滤波器。
实际使用中理想滤波器是不可实现的,必须设计一个因果可实现的滤波器去逼近。通常,通带和阻带都允许存在一定的误差范围,即通带不一定是完全水平的,阻带也不一定绝对衰减到零。在通带和阻带之间允许设置一定宽度的过渡带。
2、典型的模拟滤波器
典型的模拟滤波器有巴特沃斯滤波器、切比雪夫滤波器(一型/二型)、椭圆滤波器等。每种滤波器都有其不同的特点。
巴特沃斯滤波器具有单调下降的幅频特性,通带和阻带幅频都比较平坦。
切比雪夫1型滤波器在通带内具有等波动的幅频特性。
切比雪夫2型滤波器在阻带内具有等波动的幅频特性。
椭圆滤波器在通带和阻带内均具有等波动的幅频特性。
二.实验用函数
1、buttord
功能:确定巴特沃斯滤波器的最小阶数和截止频率。
调用格式:
[n,wn]=buttord(wp,ws,rp,rs):计算巴特沃斯数字滤波器的阶数和截止频率。
[n,wn]=buttord(wp,ws,rp,rs,’s’):计算巴特沃斯模拟滤波器的阶数和截止频率。
其中:wp通带截止频率,ws阻带截止频率,rp通带衰减,rs阻带衰减。wp,ws为一元向量时,为低通或高通滤波器,wp,ws为二元向量时,为带通或带阻滤波器。
2、cheb1ord
功能:确定切比雪夫1型滤波器的最小阶数和通带截止频率。
调用格式:
[n,wn]=cheb1ord(wp,ws,rp,rs):计算切比雪夫1型数字滤波器的最小阶数和通带截止频率。
[n,wn]= cheb1ord (wp,ws,rp,rs,’s’):计算切比雪夫1型模拟滤波器的最小阶数和通带截止频率。
3、cheb2ord
功能:确定切比雪夫2型滤波器的最小阶数和阻带截止频率。
调用格式:
[n,wn]=cheb2ord(wp,ws,rp,rs):计算切比雪夫2型数字滤波器的最小阶数和阻带截止频率。
[n,wn]= cheb2ord (wp,ws,rp,rs,’s’):计算切比雪夫2型模拟滤波器的最小阶数和阻带截止频率。
4、ellipord
功能:确定椭圆滤波器的最小阶数和通带截止频率。
调用格式:
[n,wn]=ellipord(wp,ws,rp,rs):计算椭圆数字滤波器的最小阶数和通带截止频率。
[n,wn]= ellipord(wp,ws,rp,rs,’s’):计算椭圆模拟滤波器的最小阶数和通带截止频率。
5、buttap
功能:巴特沃斯模拟低通滤波器原型。
调用格式:
[z,p,k]=buttap(n):设计巴特沃斯模拟低通滤波器原型,其传递函数为
此时z为空阵。巴特沃斯滤波器由通带内最平坦、总体上单调的幅度特性来表征。
6、cheb1ap
功能:切比雪夫1型模拟低通滤波器原型。
调用格式:
[z,p,k]=cheb1ap(n,rp):设计切比雪夫1型模拟低通滤波器原型,其通带内的波纹系数为rp分贝,传递函数为
此时z为空阵。切比雪夫1型滤波器为通带内等波纹、阻带内单调的滤波器,其极点均匀分布在左半平面的椭圆上。
7、cheb2ap
功能:切比雪夫2型模拟低通滤波器原型。
调用格式:
[z,p,k]=cheb2ap(n,rs):设计切比雪夫2型模拟低通滤波器原型,其阻带内的波纹系数小于rs分贝,传递函数为
切比雪夫2型滤波器为通带内单调、阻带内等波纹的滤波器,其极点位置为cheb1ap极点位置的倒数。
8、ellipap
功能:椭圆模拟低通滤波器原型。
调用格式:
[z,p,k]=ellipap(n,rp,rs):设计椭圆模拟低通滤波器原型,其通带内的波纹系数为rp分贝,阻带内的波纹系数小于通带的rs分贝,传递函数为
椭圆滤波器为通带内和阻带内等波纹的滤波器,它具有比巴特沃斯和切比雪夫更陡的下降斜率,但会损失通带和阻带的波纹指标。
9、zp2tf
[b, a] = zp2tf(z, p, k)
将一个分解的传递函数表示方式转换。
将单输入/多输出(SIMO)系统的多输出表示转换为多项式传递函数表示。
三.实例
1.通过模拟滤波器原型设计一个巴特沃斯模拟低通滤波器
要求通带截止频率fp=2kHz,通带最大衰减Rp<=1dB,阻带截止频率fs=5kHz,阻带最小衰减As>=20dB。
fp = 2000;
fs = 5000;
rp = 1;
rs = 20;
[n,fn] = buttord(fp,fs,rp,rs,'s');
[z,p,k] = buttap(n);
[b,a] = zp2tf(z,p,k);
freqs(b,a);
2.设计一个模拟原型低通滤波器
要求通带截止频率fp=6kHz,通带最大衰减Rp<=1dB,阻带截止频率fs=15kHz,阻带最小衰减As>=30dB。要求:分别利用巴特沃斯、切比雪夫、椭圆等滤波器来实现。熟悉几种经典滤波器的基本使用。
%%
fp = 6000;
fs = 15000;
rp = 1;
rs = 30;
[n,fs] = buttord(fp,fs,rp,rs,'s');
[z,p,k] = buttap(n);
[b,a] = zp2tf(z,p,k);
freqs(b,a);
%%
fp = 6000;
fs = 15000;
rp = 1;
rs = 30;
[n,fs] = cheb1ord(fp,fs,rp,rs,'s');
[z,p,k] = cheb1ap(n,rp);
[b,a] = zp2tf(z,p,k);
freqs(b,a);
%%
fp = 6000;
fs = 15000;
rp = 1;
rs = 30;
[n,fs] = cheb2ord(fp,fs,rp,rs,'s');
[z,p,k] = cheb2ap(n,rs);
[b,a] = zp2tf(z,p,k);
freqs(b,a);
%%
fp = 6000;
fs = 15000;
rp = 1;
rs = 30;
[n,fs] = ellipord(fp,fs,rp,rs,'s');
[z,p,k] = ellipap(n,rp,rs);
[b,a] = zp2tf(z,p,k);
freqs(b,a);