一.实验目的
1. 掌握IIR 数字滤波器设计的方法;
2. 掌握IIR 数字滤波器直接型、级联型和并联型的基本特点并根据给定的传递函数形式正
确选择是否采用直接型、级联型和并联型。
3. 熟悉直接型、级联型和并联型软件实现的编程方法。
二.实验原理
一个IIR 滤波器的系统函数给出为:
有三种结构用于实现一个IIR 滤波器。
1.直接型:结构数字滤波器按给出的差分方程式直接与以实现。有两种型式:直接Ⅰ型和
直接Ⅱ型结构。直接型结构用两个行向量来描述:含有系数{ n b }的向量b 和含有系数{ n a }
的向量a,MATLAB 中其结构实现是用filter 函数。
2. 级联型:将系统函数H(z)写成具有实系数的二阶节的乘积。即将分子分母多项式分解为
它们各自的根,然后将一对复数共轭根或者任意两个实数根组合成二阶多项式。一般假定N
为偶数,有:
三.实验内容
1、根据程序参考流程图,分别编制以下给出的IIR 数字滤波器直接型、级联型和并联型结
构的单位脉冲响应,单位阶跃响应及频率特性的程序。
2、利用所编的程序,对以下IIR 数字滤波器,给出三种结构形式下的滤波器结构及信号流
图,并画出此结构下单位脉冲响应和单位阶跃响应曲线。
参考流程图:
四、思考题
(1)对于实验中的三种结构形式,你认为哪一种在计算机上实现更方便些,为什么?
(2)所给出的IIR 数字滤波器是低通、高通还是带通?3dB 截止频率大约是多少?是否是线性相位的?
(3)为何要将系统函数转换为三种不同的结构,三种结构的优缺点各是什么?
五、实验报告要求
1.简述实验目的及原理。
2.给出数字滤波器三种结构形式的结果。
3.对三种结构形式滤波器的优缺点进行分析比较。
4.简要回答思考题。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104b=[1,-3,11,27,18]; a=[16,12,2,-4,-1]; n=0:63; figure; h=impz(b,a,n); u=dstep(b,a,n); w=linspace(-2*pi,2*pi,500); H=freqz(b,a,w); H=20*log10(abs(H)); subplot(3,1,1),stem(n,h,'.'); title('直接型单位冲激响应'); subplot(3,1,2),stem(n,u,'.'); title('直接型单位阶跃响应'); subplot(3,1,3),plot(w/pi,H); title('直接型频率响应'); axis([0,1,-50,20]); xlabel('单位:pi'); ylabel('单位:dB'); [sos,g]=tf2sos(b,a); N=size(sos); N=N(1); h0=[n==0]; for k=1:N b1=sos(k,1:3); a1=sos(k,4:6); h1=impz(b1,a1,n); h0=conv(h0,h1); end h0=g*h0; h0=h0(1:64); figure; subplot(3,1,1),stem(n,h0,'.'); title('级联型单位冲激响应'); u0=[n>=0]; for k=1:N b1=sos(k,1:3); a1=sos(k,4:6); h1=impz(b1,a1,n); u0=conv(u0,h1); end u0=g*u0; u0=u0(1:64); subplot(3,1,2),stem(n,u0,'.'); title('级联型单位阶跃响应'); w=linspace(-2*pi,2*pi,500); H0=ones(1,length(w)); for k=1:N b1=sos(k,1:3); a1=sos(k,4:6); H1=freqz(b1,a1,w); H0=H0.*H1; end H0=g*H0; H0=20*log10(abs(H0)); subplot(3,1,3),plot(w/pi,H0); title('级联型频率响应'); axis([0,1,-50,20]); xlabel('单位:pi'); ylabel('单位:dB'); [r,p,q]=residuez(b,a); N=size(r); N=N(1); h0=zeros(1,64); for k=1:N b1=r(k); a1=[1,-1*p(k)]; s=[n==0]; h1=filter(b1,a1,s); h0=h0+h1; end h1=[n==0]; h1=q*h1; h0=h0+h1; figure; subplot(3,1,1),stem(n,h0,'.'); title('并联型单位冲激响应'); u0=zeros(1,64); for k=1:N b1=[r(k),0]; a1=[1,-1*p(k)]; s=[n>=0]; u1=filter(b1,a1,s); u0=u0+u1; end u1=[n>=0]; u1=q*u1; u0=u0+u1; subplot(3,1,2),stem(n,u0,'.'); title('并联型单位阶跃响应'); w=linspace(-2*pi,2*pi,500); H10=zeros(1,length(w)); for k=1:N b1=[r(k),0]; a1=[1,-1*p(k)]; H11=freqz(b1,a1,w); H10=H10+H11; end H10=q+H10; H10=20*log10(abs(H10)); subplot(3,1,3),plot(w/pi,H10); title('并联型频率响应'); axis([0,1,-50,20]); xlabel('单位:pi'); ylabel('单位:dB');
最后
以上就是安静银耳汤最近收集整理的关于IIR 数字滤波器三种结构形式的MATLAB实现的全部内容,更多相关IIR内容请搜索靠谱客的其他文章。
发表评论 取消回复