(2)调用butter函数设计出巴特沃斯滤波器,格式为[b,a]=butter(N,Wc,options)
输入参数:
N和Wc是buttord函数返回的参数,含义见上。
Options=’low’,’high’,’bandpass’,’stop’,分别对应低通、高通、带通、带阻,默认情况下为低通或带通。
输出参数:
b和a为设计出的IIR数字滤波器H(s)的分子多项式和分母多项式的系数矩阵。
2.ChebyshevI型滤波器设计
ChebyshevI型滤波器为通带纹波控制器:
在通带呈现纹波特性,在阻带单调衰减。
[N,Wc]=cheb1ord(Wp,Ws,Ap,As)
[b,a]=cheby1(N,Ap,Wc,options)
参数含义与butter中参数一致。
2.ChebyshevII型滤波器设计
ChebyshevII型滤波器为阻带纹波控制器:
在阻带呈现纹波特性。
[N,Wc]=cheb2ord(Wp,Ws,Ap,As)
[b,a]=cheby2(N,As,Wc,options)
3.椭圆滤波器设计
椭圆滤波器在通阻带都呈现纹波特性。
[N,Wc]=ellipord(Wp,Ws,Ap,As)
[b,a]=ellip(N,Ap,As,Wc,options)
四:
实验步骤
第一:
实验内容
1.信号
确定设计指标,实现各种IIR数字滤波器以实现以下信号处理。
(1)设计IIR低通滤波器,滤除
的成分。
(2)设计IIR高通滤波器,滤除
的成分。
(3)设计IIR带通滤波器,滤除
的成分。
(4)设计IIR带阻滤波器,滤除
的成分。
要求利用butterord函数求解滤波器的阶数;利用butter函数设计各IIR数字滤波器;画出滤波器的幅度相应和相位响应;给出IIR数字滤波器的系统函数。
2.某带通滤波器的设计指标为
(1)试分别利用巴特沃斯、切比雪夫Ⅰ型、切比雪夫Ⅱ型和椭圆模拟滤波器,通过脉冲响应不变法设计该带通数字滤波器,画出其频率特性,比较设计结果。
(2)试分别利用巴特沃斯、切比雪夫Ⅰ型、切比雪夫Ⅱ型和椭圆模拟滤波器,通过双线性变换法设计该带通数字滤波器,画出其频率特性,比较设计结果。
(3)分析比较以上设计结果,有何结论?
3.双音多频(dual-tonemultifrequency,DTMF)信号的产生及检测在现代通信系统中有着广泛的应用,家用电话、移动电话以及公共程控交换机(PBX)都采用DTMF信号发送和接收电话拨号号码。
DTMF信号由低频组和高频组两组频率信号构成,高频为列,低频为行。
按键电话上每个按键都由对应的两个频率组成。
当按下某个键时,所得到的按键信号是由相应两个频率的正弦信号x[k]=sin(
k)+sin(
k),
,
,
1209
1336
1477
697
1
2
3
770
4
5
6
852
7
8
9
941
*
0
#
DTMF信号可以用IIR数字滤波器来进行解码。
如图所示
接收到的音频信号通过低通和高通滤波器。
由于DTMF信号行频低于列频,所以低通和高通可以分离出行和列信息。
再通过带通滤波器,对其输出的振幅大小进行判断,可以确定具体的行频和列频。
如图中所示的滤波器响应,将得到按键“4”。
(1)利用DTMF的产生原理合成数字“4”,合成公式为:
,
画出其时域波形和频谱图。
(2)根据图中的低通和高通滤波器,画出两个滤波器的幅频响应;并利用
对信号
进行滤波;利用fft函数求得输出的频响,绘出幅频响应曲线。
(3)设计图中的第一组的四个带通滤波器,画出滤波器的幅频响应;并利用
对图中相应的输入信号进行滤波,在一张图上用不同颜色画出这四条输出曲线。
比较其幅值,BP770Hz滤波器的输出最大,因此确定该DTMF的行频为770Hz。
(4)设计图中的第二组的三个带通滤波器,画出滤波器的幅频响应;并利用
对图中相应的输入信号进行滤波,在一张图上用不同颜色画出这三条输出曲线。
比较其幅值,BP1209Hz滤波器的输出最大,因此确定该DTMF的列频为1209Hz。
从(4)和(5)可以解出该DTMF信号为按键“4”。
(5)生成0—9其他数字的DTMF信号,按照上述方法进行解码,验证该方法的正确性。
(6)对于图中的第一组带通滤波器的4个输出,分别用fft函数求其频响,画出幅频响应曲线。
同理在一张图上用不同颜色画出第二组带通滤波器的3个输出的幅频响应曲线。
能否用这种方法解出DTMF信号?
(2)实验程序及波形:
实验内容1
%低通滤波器
[N,Wc]=buttord(0.250,0.677,3,60)
[b,a]=butter(N,Wc,'low')
freqz(b,a);
axis([0,1,-120,0]);
gridon
title('巴特沃斯低通数字滤波器')
%高通滤波器
[N,Wc]=buttord(0.250,0.677,3,60)
[b,a]=butter(N,Wc,'high')
freqz(b,a);
axis([0,1,-120,0]);
gridon
title('巴特沃斯高通数字滤波器')
%带通滤波器
Wp=[0.250.67];Ws=[0.25-0.030.67+0.03];
Rp=3;Rs=60;
[N,Wc]=buttord(Wp,Ws,Rp,Rs)
[b,a]=butter(N,Wc,'bandpass')
freqz(b,a);
axis([0,1,-120,0]);
gridon
title('巴特沃斯带通数字滤波器')
N=
40
Wc=
0.24990.6701
b=
Columns1through7
0.00000-0.000000.00000-0.0000
Columns8through14
00.00000-0.000000.00000
Columns15through21
-0.000000.00000-0.000100.0003
Columns22through28
0-0.000700.00170-0.00370
Columns29through35
0.00720-0.012500.01950-0.0276
Columns36through42
00.03530-0.040800.04290
Columns43through49
-0.040800.03530-0.027600.0195
Columns50through56
0-0.012500.00720-0.00370
Columns57through63
0.00170-0.000700.00030-0.0001
Columns64through70
00.00000-0.000000.00000
Columns71through77
-0.000000.00000-0.000000.0000
Columns78through81
0-0.000000.0000
a=
1.0e+005*
Columns1through7
0.0000-0.00010.0003-0.00110.0030-0.00740.0160
Columns8through14
-0.03180.0585-0.10080.1637-0.25190.3692-0.5174
Columns15through21
0.6952-0.89801.1176-1.34271.5597-1.75421.9125
Columns22through28
-2.02342.0794-2.07732.0188-1.90981.7596-1.5798
Columns29through35
1.3828-1.18030.9828-0.79850.6332-0.49020.3705
Columns36through42
-0.27340.1970-0.13860.0953-0.06390.0419-0.0268
Columns43through49
0.0167-0.01020.0061-0.00350.0020-0.00110.0006
Columns50through56
-0.00030.0002-0.00010.0000-0.00000.0000-0.0000
Columns57through63
0.0000-0.00000.0000-0.00000.0000-0.00000.0000
Columns64through70
-0.00000.0000-0.00000.0000-0.00000.0000-0.0000
Columns71through77
0.0000-0.00000.0000-0.00000.0000-0.00000.0000
Columns78through81
-0.00000.0000-0.00000.0000
%带阻滤波器
Wp=[0.250.67];Ws=[0.25-0.030.67+0.03];
Rp=3;Rs=60;
[N,Wc]=buttord(Wp,Ws,Rp,Rs)
[b,a]=butter(N,Wc,'stop')
freqz(b,a);
axis([0,1,-120,0]);
gridon
title('巴特沃斯带阻数字滤波器')
N=
40
Wc=
0.24990.6701
b=
1.0e+005*
Columns1through7
0.0000-0.00000.0000-0.00000.0000-0.00000.0000
Columns8through14
-0.00000.0000-0.00000.0000-0.00000.0000-0.0000
Columns15through21
0.0001-0.00010.0003-0.00070.0015-0.00290.0056
Columns22through28
-0.01020.0179-0.03050.0502-0.07980.1227-0.1828
Columns29through35
0.2636-0.36860.4998-0.65760.8396-1.04091.2534
Columns36through42
-1.46601.6661-1.84011.9753-2.06102.0904-2.0610
Columns43through49
1.9753-1.84011.6661-1.46601.2534-1.04090.8396
Columns50through56
-0.65760.4998-0.36860.2636-0.18280.1227-0.0798
Columns57through63
0.0502-0.03050.0179-0.01020.0056-0.00290.0015
Columns64through70
-0.00070.0003-0.00010.0001-0.00000.0000-0.0000
Columns71through77
0.0000-0.00000.0000-0.00000.0000-0.00000.0000
Columns78through81
-0.00000.0000-0.00000.0000
a=
1.0e+005*
Columns1through7
0.0000-0.00010.0003-0.00110.0030-0.00740.0160
Columns8through14
-0.03180.0585-0.10080.1637-0.25190.3692-0.5174
Columns15through21
0.6952-0.89801.1176-1.34271.5597-1.75421.9125
Columns22through28
-2.02342.0794-2.07732.0188-1.90981.7596-1.5798
Columns29through35
1.3828-1.18030.9828-0.79850.6332-0.49020.3705
Columns36through42
-0.27340.1970-0.13860.0953-0.06390.0419-0.0268
Columns43through49
0.0167-0.01020.0061-0.00350.0020-0.00110.0006
Columns50through56
-0.00030.0002-0.00010.0000-0.00000.0000-0.0000
Columns57through63
0.0000-0.00000.0000-0.00000.0000-0.00000.0000
Columns64through70
-0.00000.0000-0.00000.0000-0.00000.0000-0.0000
Columns71through77
0.0000-0.00000.0000-0.00000.0000-0.00000.0000
Columns78through81
-0.00000.0000-0.00000.0000
实验内容2
(1)用脉冲响应不变法设计各种滤波器:
%脉冲响应不变法设计巴特沃斯带通模拟滤波器
Wp=[0.30.6];Ws=[0.20.72];
Ap=2;As=42;Fs=1;
[N,Wc]=buttord(Wp,Ws,Ap,As);
[b,a]=butter(N,Wc,'bandpass');
freqz(b,a);
axis([0,1,-120,0]);
gridon
title('脉冲响应不变法巴特沃斯带通模拟滤波器');
%脉冲响应不变法设计巴特沃斯带通数字滤波器
Wp=[0.30.6];Ws=[0.20.72];
Ap=2;As=42;Fs=1;
[N,Wc]=buttord(Wp,Ws,Ap,As);
[b,a]=butter(N,Wc,'bandpass');
h=freqz(b,a,w);
axis([0,1,-120,0]);
[numd,dend]=impinvar(b,a,Fs);
w=linspace(0,pi,512);
norm=max(abs(h));
a=a/norm;
plot(w/pi,20*log10(abs(h)/norm));
gridon
title('脉冲响应不变法巴特沃斯带通数字滤波器')
%脉冲响应不变法设计切比雪夫1型带通模拟滤波器
Wp=[0.30.6];Ws=[0.20.72];
Ap=2;As=42;Fs=1;
[N,Wc]=cheb1ord(Wp,Ws,Ap,As);
[b,a]=cheby1(N,Ap,Wc,'bandpass');
freqz(b,a);
axis([0,1,-120,0]);
gridon
title('脉冲响应不变法切比雪夫1型带通模拟滤波器');
%脉冲响应不变法设计切比雪夫1型带通数字滤波器
Wp=[0.30.6];Ws=[0.20.72];
Ap=2;As=42;Fs=1;
[N,Wc]=cheb1ord(Wp,Ws,Ap,As);
[b,a]=cheby1(N,As,Wc,'bandpass');
w=linspace(0,pi,512);
h=freqz(b,a,w);
axis([0,1,-120,0]);
[numd,dend]=impinvar(b,a,Fs);
w=linspace(0,pi,512);
norm=max(abs(h));
a=a/norm;
plot(w/pi,20*log10(abs(h)/norm));
gridon
title('脉冲响应不变法切比雪夫1型带通数字滤波器');
%脉冲响应不变法设计切比雪夫2型带通模拟滤波器
Wp=[0.30.6];Ws=[0.20.72];
Ap=2;As=42;Fs=1;
[N,Wc]=cheb2ord(Wp,Ws,Ap,As);
[b,a]=cheby2(N,As,Wc,'bandpass');
freqz(b,a);
axis([0,1,-120,0]);
gridon
title('脉冲响应不变法切比雪夫2型带通模拟滤波器');
%脉冲响应不变法设计切比雪夫2型带通数字滤波器
Wp=[0.30.6];Ws=[0.20.72];
Ap=2;As=42;Fs=1;
[N,Wc]=cheb2ord(Wp,Ws,Ap,As);
[b,a]=cheby2(N,As,Wc,'bandpass');
w=linspace(0,pi,512);
h=freqz(b,a,w);
axis([0,1,-120,0]);
[numd,dend]=impinvar(b,a,Fs);
norm=max(abs(h));
a=a/norm;
plot(w/pi,20*log10(abs(h)/norm));
gridon
title('脉冲响应不变法切比雪夫2型带通数字滤波器');
%脉冲响应不变法设计椭圆带通模拟滤波器
Wp=[0.30.6];Ws=[0.20.72];
Ap=2;As=42;Fs=1;
[N,Wc]=ellipord(Wp,Ws,Ap,As);
[b,a]=ellip(N,Ap,As,Wc,'bandpass');
freqz(b,a);
axis([0,1,-120,0]);
gridon
title('脉冲响应不变法椭圆带通模拟滤波器');
%脉冲响应不变法设计椭圆型带通数字滤波器
Wp=[0.30.6];Ws=[0.20.72];
Ap=2;As=42;Fs=1;
[N,Wc]=ellipord(Wp,Ws,Ap,As);
[b,a]=ellip(N,Ap,As,Wc,'bandpass');
h=freqz(b,a,w);
axis([0,1,-120,0]);
[numd,dend]=impinvar(b,a,Fs);
w=linspace(0,pi,512);
norm=max(abs(h));
a=a/norm;
plot(w/pi,20*log10(abs(h)/norm));
gridon
title('脉冲响应不变法椭圆带通数字滤波器');
(2)用双线性变换法设计各种滤波器:
%双线性变换法设计巴特沃斯带通模拟滤波器
%下列八个程序中约定WWp为数字频率
WWp=[0.30.6];WWs=[0.20.72];
Wp=tan(WWp/2);Ws=tan(WWs/2);
Ap=2;As=42;Fs=1;
[N,Wc]=buttord(