数字滤波器的设计(MATLAB仿真)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2012-5-9
16
得出结果: N= 3 wn = 0.2000 b= 0.0066
0.4000
0 -0.0198
0
0.0198
0 -0.0066
a= 1.0000 -3.3130 0.6884
2012-5-9
6.1125 -6.9677
5.3979 -2.5753
17
图形:
Magnitude (dB)
2012-5-9
27
[b,a] = yulewalk(n,f,m) yulewalk designs recursive IIR digital filters using a least-squares fit to a specified frequency response. [b,a] = yulewalk(n,f,m) returns row vectors b and a containing the n+1 coefficients of the order n IIR filter whose frequencymagnitude characteristics approximately match those given in vectors f and m: f is a vector of frequency points, specified in the range between 0 and 1, where 1 corresponds to half the sample frequency (the Nyquist frequency). The first point of f must be 0 and the last point 1, with all intermediate points in increasing order. Duplicate frequency points are allowed, corresponding to steps in the frequency response.
设计一个巴特沃斯高通数字滤波器,满足:通带边界 频率为400赫兹;阻带边界频率为200赫兹,通带波纹 小于3dB,阻带衰减大于15dB;采样频率为1000赫兹。
2012-5-9
7
MATLAB程序: fs=1000; wp=400*2/fs;ws=200*2/fs; rp=3;rs=15;Nn=128; [N,wn]=buttord(wp,ws,rp,rs) [b,a]=butter(N,wn,'high') freqz(b,a,Nn,fs)
2012-5-9
20
得出结果: N= 3 wn = 0.0600 b= 0.6552 -0.7429 -0.4286 a= 1.0000 -1.5792 0.2614 -0.2431 0.7349 0.2573 -0.4243 0.0000 0.4286 0.7429 -0.6552 0.6000
数字滤波器的设计(MATLAB仿真) 数字滤波器的设计(MATLAB仿真) (MATLAB仿真
李晓帆 2012-04-17
一、IIR滤波器的经典设计
1、用巴特沃斯滤波器原型设计一个低通滤 波器,满足:
ω p = 0.2π , R p = 1dB, ωs = 0.3π , As = 15dB
采样频率为10000赫兹。 采用脉冲响应不变法。
0 -50
-100 -150 -200
0
50
100
150
200 250 300 Frequency (Hz)
350
400
450
500
0 Phase (degrees) -200 -400 -600 -800
0
50
100
150
200 250 300 Frequency (Hz)
350
400
450
500
( n −1) + ... + b( n −1) s... + bn B ( s ) b1s = ( m −1) A( s ) a1s + ... + a( m −1) s... + am
Lp2lp:频率转换函数 Impinvar:脉冲响应不变法函数
Butter:完全设计函数
2012-5-9 6
双线性变换法
2012-5-9
18
设计一个带通Chebyshev II型数字滤波 器,满足:通带边界频率为100-200赫兹; 过渡带宽为30赫兹,通带波纹小于3dB, 阻带衰减大于30dB;采样频率为1000赫 兹。
2012-5-9
19
程序: fs=1000; wp=[100 200]*2/fs;ws=[30 300]*2/fs; rp=3;rs=30;Nn=128; [N,wn]=cheb2ord(wp,ws,rp,rs) [b,a]=cheby2(N,rp,wn) freqz(b,a,Nn,fs)
2012-5-9
13
图形:
0 Magnitude (dB) -20
-40
-60
0
100
200
300
400 500 600 Frequency (Hz)
700
800
900
1000
0 Phase (degrees) -20 -40 -60 -80 -100 0 100 200 300 400 500 600 Frequency (Hz) 700 800 900 1000
2012-5-9
24
得出结果: b= 0.2774 -0.0460 -0.0761 0.1008 -0.0571 0.1488 0.1262 -0.3949 -0.0783 0.0512 0.0270
a= 1.0000 -0.0185 0.2372 -0.0633 0.4144 0.1727 0.0393 0.0629 0.3588 0.0496 0.1016
2012-5-9
25
图形:
1.4 1.2
direct IIR design-yulewalk ? ? ? ? ? ? ? ?
1
magnitude
0.8
0.6
0.4
0.2
0
0
0.1
0.2
0.3
0.4 0.5 0.6 frequency(pi)
0.7
0.8
0.9
1
2012-5-9
26
函数yulewalk直接设计IIR滤波器,函数调用格式为: [b,a]=yulewalk(n,f,m) n :滤波器的阶数; f :滤波器点向量,标准化频率取值范围为0-1,第一 个频率点为0,最后一个频率点为1,向量的频率点必 须是递增的; m :和频率向量对应的理想幅值响应向量。 b,a分别是所设计滤波器的分子和分母系数向量;
350
400
450
500
200 Phase (degrees) 150 100 50 0
0
50
100
150
200 250 300 Frequency (Hz)
350
400
450
500
2012-5-9
Fra Baidu bibliotek
10
设计一个Butter-worth低通数字滤波器,满足:通带 边界频率为1赫兹;阻带边界频率为400赫兹,通带波 纹小于3dB,阻带衰减大于15dB;采样频率为2000赫兹。
2012-5-9
8
得出结果: N= 2 wn = 0.6630 b= 0.1578 -0.3155 a= 1.0000 0.6062 0.2373 0.1578
2012-5-9
9
图形:
0 Magnitude (dB) -50
-100
0
50
100
150
200 250 300 Frequency (Hz)
2012-5-9
11
MATLAB程序: fs=2000; wp=1*2/fs;ws=400*2/fs; rp=3;rs=15;Nn=128; [N,wn]=buttord(wp,ws,rp,rs) [b,a]=butter(N,wn) freqz(b,a,Nn,fs)
2012-5-9
12
得出结果: N= 1 wn = 0.0831 b= 0.1161 a= 1.0000 -0.7679 0.1161
2012-5-9
14
设计一个带通Chebyshev I型数字滤波器, 满足:通带边界频率为100-200赫兹;过 渡带宽为30赫兹,通带波纹小于3dB,阻 带衰减大于30dB;采样频率为1000赫兹。
2012-5-9
15
MATLAB程序: fs=1000; wp=[100 200]*2/fs;ws=[30 300]*2/fs; rp=3;rs=30;Nn=128; [N,wn]=cheb1ord(wp,ws,rp,rs) [b,a]=cheby1(N,rp,wn) freqz(b,a,Nn,fs)
4
图形:
0 Magnitude (dB) -100 -200 -300 -400
0
500
1000
1500
2000 2500 3000 Frequency (Hz)
3500
4000
4500
5000
180 Phase (degrees)
179
178
177
0
500
1000
1500
2000 2500 3000 Frequency (Hz)
2012-5-9
2
MATLAB 程序:
wp=0.2*pi;ws=0.3*pi rp=1; rs=15; fs=10000; Nn=128; [n,wn]=buttord(wp,ws,rp,rs,'s'); [z,p,k]=buttap(n); [bap,aap]=zp2tf(z,p,k); [b,a]=lp2lp(bap,aap,wn); [bz,az]=impinvar(b,a,fs) freqz(bz,az,Nn,fs)
2012-5-9
28
m is a vector containing the desired magnitude response at the points specified in f. f and m must be the same length. plot(f,m) displays the filter shape. The output filter coefficients are ordered in descending powers of z. B ( z ) b(1) + b(2) z −1... + b(n + 1) z − n = A( z ) a (1) + a(2) z −1... + a(n + 1) z − n When specifying the frequency response, avoid excessively sharp transitions from passband to stopband. You may need to experiment with the slope of the transition region to get the best filter design
3500
4000
4500
5000
2012-5-9
5
Buttord:阶数估计函数 Buttap:低通模拟原型滤波器函数 Zp2tf:零极点变换传递函数形式
( s − z1 )( s − z2 )...( s − zm ) Z ( s) H ( s) = =k P( s) ( s − p1 )( s − p2 )...( s − pn )
2012-5-9
3
得出结果:
ws =0.9425 bz = 1.0e-017 * 0.0272 -0.1383 0.2840 -0.2943 0.1440 0.0107 az = 1.0000 -5.9997 14.9986 -19.9973 14.9973 -5.9986 0.9997
2012-5-9
350
400
450
500
2012-5-9
22
工程IIR滤波器的直接设计
用直接法设计一个多频带数字滤波器,幅 频响应值为: f=[0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1] m=[0 0 1 1 0 0 1 1 0 0 0].
2012-5-9
23
程序: oder=10; f=0:0.1:1;m=[0 0 1 1 0 0 1 1 1 0 0]; [b,a]=yulewalk(oder,f,m) [h,w]=freqz(b,a,128) axes('position',[0.2 0.2 0.4 0.4]); plot(f,m,'b-',w/pi,abs(h),'m--'); xlabel('frequency(pi)'); ylabel('magnitude'); title('direct IIR design-yulewalk'); legend('理想图形','实际图形',1); grid
2012-5-9
21
图形:
Magnitude (dB)
0
-100
-200
-300
0
50
100
150
200 250 300 Frequency (Hz)
350
400
450
500
200 Phase (degrees) 100 0 -100 -200
0
50
100
150
200 250 300 Frequency (Hz)
相关文档
最新文档