实验三滤波器的结构.docx
《实验三滤波器的结构.docx》由会员分享,可在线阅读,更多相关《实验三滤波器的结构.docx(25页珍藏版)》请在冰豆网上搜索。
实验三滤波器的结构
HUNANUNIVERSITY
数字信号
课程实验报告
专业班级:
通信工程一班
完成日期:
2014\05\04
实验三滤波器的结构
1、实验目的
认真复习数字滤波器的表示方法,信号流图的基本概念和画法;IIR数字滤波器的基本
特性和FIR数字滤波器的基本特性。
掌握IIR数字滤波器的直接I型、II型、级联型、并联型结构的特点和表示方法;FIR
数字滤波器的直接型、级联型、频率抽样型以及快速卷积的结构特点和表示方法;线性相位
FIR滤波器的结构和特点;全通滤波器、梳状滤波器的特点和表示方法。
2、实验内容
a.设IIR系统的四阶差分方程为:
画出该滤波器的直接I和直接II型结构图。
(1)当
时,求系统的单位冲激响应,并绘制响应的波形
(2)当
时,求系统的单位冲激响应,并绘制响应的波形
代码:
clc;
N=10;
n=0:
N-1;
b1=[1-26-13];%输入信号的系数向量
a1=[1-2-43-5];%输出信号的系数向量
b2=[2-14-3-2];%输入信号的系数向量
a2=[14-1-46];%输出信号的系数向量
y1=impz(b1,a1,N);%求系统单位冲激响应1
y2=impz(b2,a2,N);%求系统单位冲激响应2
subplot(211);
stem(n,abs(y1));
title('系统函数1');
subplot(212);
stem(n,abs(y2));
title('系统函数2');
结果:
(1)直接型Ⅰ
直接型Ⅱ
(2)直接型Ⅰ
直接型Ⅱ
b.三个IIR滤波器的方程和系统函数分别为
(1)编制MATLAB程序,求出各滤波器的级联型网络的系数,并画出级联结构。
(2)编制MATLAB程序,求出各滤波器的并联型网络的系数,并画出并联结构。
代码:
clc;
b1=[1-311-2718];%输入信号系数向量
a1=[16122-4-1];%输出信号系数向量
b2=[381272-2];%输入信号系数向量
a2=[1624241451];%输出信号系数向量
b3=[210233431164];%输入信号系数向量
a3=[367887592671];%输出信号系数向量
%级联型网络的系数
[sos1,G1]=tf2sos(b1,a1)
[sos2,G2]=tf2sos(b2,a2)
[sos3,G3]=tf2sos(b3,a3)
%并联型网络的系数
[C1,B1,A1]=tf2par(b1,a1)
[C2,B2,A2]=tf2par(b2,a2)
[C3,B3,A3]=tf2par(b3,a3)
tf2par(b,a)函数:
function[C,B,A]=tf2par(b,a)%直接型向并联型转换
M=length(b);
N=length(a);
[r1,p1,C]=residuez(b,a);
p=cplxpair(p1,0.000000001);
I=cplxcomp(p1,p);
r=r1(I);
K=floor(N/2);
B=zeros(K,2);
A=zeros(K,3);
ifK*2==N
fori=1:
2:
N-2
pi=p(i:
i+1,:
);
ri=r(i:
i+1,:
);
[Bi,Ai]=residuez(ri,pi,[]);
B(fix((i+1/2),:
)=real(Bi);
A(fix((i+1/2),:
)=real(Ai);
end;
[Bi,Ai]=residuez(r(N-1),p(N-1),[]);
B(K,:
)=[real(Bi)0];
A(K,:
)=[real(Ai)0];
else
fori=1:
2:
N-1
pi=p(i:
i+1,:
);
ri=r(i:
i+1,:
);
[Bi,Ai]=residuez(ri,pi,[]);
B(fix((i+1/2),:
)=real(Bi);
A(fix((i+1/2),:
)=real(Ai);
end
end
结果
sos1=
1.0000-3.00002.00001.0000-0.2500-0.1250
1.00000.00009.00001.00001.00000.5000
G1=
0.0625
sos2=
1.0000-0.333301.00000.50000
1.00002.00002.00001.00000.50000.2500
1.00001.00001.00001.00000.50000.5000
G2=
0.1875
sos3=
1.00003.00002.00001.00000.50000.2500
1.00001.00002.00001.00001.00000.3333
1.00001.00000.50001.00000.66670.3333
G3=
0.0556
C1=
-18
B1=
-10.0500-3.9500
28.1125-13.3625
A1=
1.00001.00000.5000
1.0000-0.2500-0.1250
C2=
-2
B2=
-0.8438-1.0313
0.68752.3438
2.34370
A2=
1.00000.50000.5000
1.00000.50000.2500
1.00000.50000
C3=
4
B3=
-1.1905-0.1587
-1.11111.7778
-1.6429-4.2143
A3=
1.00001.00000.3333
1.00000.66670.3333
1.00000.50000.2500
级联型:
系统一
系统二
系统三
并联型:
系统一
系统二
系统三
c.FIR滤波器的方程和系统函数分别为
画出该滤波器的直接II型结构图。
(1)当
时,求系统的单位冲激响应,并绘制响应的波形。
(2)当
时,求系统的单位冲激响应,并绘制响应的波形。
代码:
clc;
b1=[1,-2,6,-1,3];
a=1;
b2=[2,-1,4,-3,-2];
b2=1;
subplot(2,1,1);
dimpulse(b1,a1,20);
title('系统一的单位冲击响应')
subplot(2,1,2);
dimpulse(b2,a2,10);
title('系统二的单位冲击响应')
结果
系统一
系统二
d.三个FIR滤波器的方程和系统函数分别为
编制MATLAB程序,求出各滤波器的级联型网络的系数,并画出级联结构。
代码:
%级联型网格系数
clc;
b1=[16-32-51];%输入信号系数向量
b2=[210233431164];%输入信号系数向量
b3=[6317410274316];%输入信号系数向量
[sos1,G1]=tf2sos(b1,1)
[sos2,G2]=tf2sos(b2,1)
[sos3,G3]=tf2sos(b3,1)
结果
sos1=
1.00006.525301.000000
1.0000-1.07280.18461.000000
1.00000.54750.83031.000000
G1=
1
sos2=
1.00003.00002.00001.000000
1.00001.00002.00001.000000
1.00001.00000.50001.000000
G2=
2
sos3=
1.00003.111301.000000
1.00003.23177.47581.000000
1.0000-1.17632.26431.000000
G3=
6
系统一
系统二
系统三
e.FIR滤波器的单位抽样相应为
编制MATLAB程序求系统的频率采样型结构的系数,并画出频率抽样型结构。
主程序:
clc;
h=[1,2,3,2,1]/9;
[C,B,A]=tf2fs(h)
tf2fs(h)函数
%频率抽样型
function[C,B,A]=tf2fs(h)
N=length(h);
H=fft(h,N)%各频率抽样值
MagH=abs(H);
phaH=angle(H)';
if(N==2*floor(N/2))%N为偶数
L=N/2-1;
A1=[1,-1,0;1,1,0];%设置z=+1/-1处两个实极点
C1=[real(H),real(H(L+2))];%相应的系数
else
L=(N-1)/2;
A1=[1,-1,0];
C1=[real(H)];
end;
k=[1:
L]';
A=ones(L,3);%初始化数组A
B=zeros(L,2);%初始化数组B
A(1:
L,2)=-2*cos(2*pi*k/N);
A=[A;A1];%计算分母的系数,加上实极点系数
B(1:
L,2)=cos(phaH(2:
L+1));%计算分子系数
B(1:
L,2)=-cos(phaH(2:
L+1)-(2*pi*k/N));
C=[2*MagH(2:
L+1),C1]'%计算增益系数
结果
H=
1.0000-0.2353-0.1710i0.0131+0.0404i0.0131-0.0404i-0.2353+0.1710i
C=
0.5818
0.0849
1.0000
-0.2353
0.0131
0.0131
-0.2353
C=
0.5818
0.0849
1.0000
-0.2353
0.0131
0.0131
-0.2353
B=
00.8090
0-0.3090
A=
1.0000-0.61801.0000
1.00001.61801.0000
1.0000-1.00000
结构图
f.一个32点的线性相位FIR滤波器的频率样本为:
编制MATLAB程序求该系统的频率采样型结构的系数,并画出频率采样型结构。
主程序:
clc;
H=[1,1,1,0.5,zeros(1,12)];
[C,B,A]=tf2fs2(H,16)
tf2fs2(H,N)函数:
%频率抽样型
function[C,B,A]=tf2fs2(H,N)
MagH=abs(H);
phaH=angle(H)';
if(N==2*floor(N/2))%N为偶数
L=N/2-1;
A1=[1,-1,0;1,1,0];%设置z=+1/-1处两个实极点
C1=[real(H),real(H(L+2))];%相应的系数
else
L=(N-1)/2;
A1=[1,-1,0];
C1=[real(H)];
end;
k=[1:
L]';
A=ones(L,3);%初始化数组A
B=zeros(L,2);%初始化数组B
A(1:
L,2)=-2*cos(2*pi*k/N);
A=[A;A1];%计算分母的系数,加上实极点系数
B(1:
L,2)=cos(phaH(2:
L+1));%计算分子系数
B(1:
L,2)=-cos(phaH(2:
L+1)-(2*pi*k/N));
C=[2*MagH(2:
L+1),C1]'%计算增益系数
结果
C=
2.0000
2.0000
1.0000
0
0
0
0
1.0000
1.0000
1.0000
0.5000
0
0
0
0
0
0
0
0
0
0
0
0
0
C=
2.0000
2.0000
1.0000
0
0
0
0
1.0000
1.0000
1.0000
0.5000
0
0
0
0
0
0
0
0
0
0
0
0
0
B=
0-0.9239
0-0.7071
0-0.3827
0-0.0000
00.3827
00.7071
00.9239
A=
1.0000-1.84781.0000
1.0000-1.41421.0000
1.0000-0.76541.0000
1.0000-0.00001.0000
1.00000.76541.0000
1.00001.41421.0000
1.00001.84781.0000
1.0000-1.00000
1.00001.00000
结构图
实验结论:
通过这次实验,我对滤波器的结构有了更深的了解,对系统函数的求法更多认识;在该实验中,运用了网格系数进行求解,加深了对滤波器的了解。
该实验要编写一些功能函数,功能函数比较难,自己还是不太理解,需要跟多学习滤波器的功能函数。