数字信号处理实验八.docx
- 文档编号:29434356
- 上传时间:2023-07-23
- 格式:DOCX
- 页数:16
- 大小:51.30KB
数字信号处理实验八.docx
《数字信号处理实验八.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验八.docx(16页珍藏版)》请在冰豆网上搜索。
数字信号处理实验八
实验八数字滤波器实现
成绩
教师签名:
年月日
一、实验目的
1、学会使用matlab设计符合要求的数字滤波器的参数。
2、学会使用基本的matlab命令,把获得的数字滤波器参数带到传输函数中写出传输函数,之后利用之前的实验知识,画出滤波器级联框图,实现滤波器。
3、学会使用得到的数字滤波器结构仿真滤波过程并能验证滤波器的结构是否正确。
2、实验内容
Q8.1程序p8.1设计了什么类型的滤波器?
指标是什么?
滤波器的阶数是多少?
为了验证仿真,需验证多少个冲激响应样本?
仿真时正确的吗?
Q8.2用转置的直接Ⅱ型仿真滤波器,修改并运行P8.1,仿真时正确的吗?
Q8.3生成习题Q8.1中产生传输函数的一个级联实现,并编写出一个程序来仿真它,其中每个单独的部分用一个直接Ⅱ型实现,验证仿真。
Q8.5生成在习题Q8.1中产生的传输函数的并联Ⅰ型实现,并编写出一个程序来仿真它,其中每个单独的部分用一个直接Ⅱ型实现,验证仿真。
Q8.6生成在习题Q8.1中产生的传输函数的并联Ⅱ型实现,并编写出一个程序来仿真它,其中每个单独的部分用一个直接Ⅱ型实现,验证仿真。
Q8.7运行程序p8.2并产生被仿真的级联格型结构的传输函数。
该传输函数与公式中产生的相同吗?
Q8.9程序p8.3设计了什么类型的滤波器?
指标是什么?
滤波器的阶数是多少?
形成正弦序列的频率是多少?
Q8.10运行程序p8.3并产生两个图形,那种频率成分会在滤波器输出出现?
为什么输出序列的开始部分不是理想的正弦曲线?
修改程序,只滤过x2[n],产生的输出序列和预料的一样吗?
Q8.14程序p8.4设计了什么类型的滤波器?
指标是什么?
滤波器的阶数是多少?
为了验证仿真,需验证多少个冲激响应样本?
仿真时正确的吗?
Q8.15用直接Ⅱ型仿真滤波器,修改并运行P8.4,仿真时正确的吗?
Q8.16生成习题Q8.14中产生传输函数的一个级联实现,并编写出一个程序来仿真它,其中每一个部分用一个直接Ⅱ型实现,验证仿真。
三、实验器材及软件
1.微型计算机1台
2.MATLAB7.0软件
4、实验原理
数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,其设计工作量比较小,对计算工具的要求不高。
在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。
FIR的设计在matlab中其实也同样很简单,其主要思想是通过先设计出无限长的IIR滤波器再通过截尾的方式获得一个FIR滤波器,但是简单的截尾会出现吉布斯现象,所以此时还需要对截尾之后的结果加窗;来减小吉布斯震荡现象。
在设计得到的滤波器传输函数的系数之后,我们需要通过matlab编程获得滤波器的结构,从而画出该滤波器物理的电路实现上的结构框图,当然数字滤波器可以使用软件编程的方式实现,此时我们将传输函数的系数带入某些函数即可直接得到该滤波器滤波之后的输出信号。
对于本章实验内容,最主要的就是设计出的滤波器系数带入函数direct2或者filter中去进行滤波,然后输出结果,来仿真滤波器的效果,同时可以通过将滤波的输出结果带入函数strucver中来推出该滤波器的结构(即滤波器的传输函数系数),从而检验滤波器是否正确。
数字滤波器的结构可以是级联形式或者并联形式,在传输函数中分别对应着各个小项相乘或者相加,当然也可以不使用级联形式直接使用直接型(传输函数不变形)来构建框图结构。
对于构建的各个小项我们可以分别使用filter函数或者direct函数来对某信号进行滤波,如果是级联型的传输函数则需要将前面的滤波输出作为后面的输入,从而形成级联结构;对于并联结构则需要将某信号分别输入所有的滤波器小项中对所有的小项分别进行滤波,然后把所有的输出叠加到一起。
五、实验步骤
1、进行本实验,首先必须熟悉matlab的运用,所以第一步是学会使用matlab。
2、学习相关基础知识,根据《数字信号处理》课程的学习理解实验内容和目的。
3、在充分熟悉基础知识的情况下进行实验,利用matlab的函数设计出滤波器传输函数的系数。
4、利用系数构造出滤波器结构,包括直接型,级联型和并联型。
5、仿真滤波器,并进行滤波器验证。
6、小结本实验,通过小结发现问题并解决问题。
六、实验记录(数据、图表、波形、程序等)
8.1输入:
Wp=[0.40.5];Ws=[0.10.8];Rp=1;Rs=30;
[N1,Wn1]=buttord(Wp,Ws,Rp,Rs);
[num,den]=butter(N1,Wn1);
disp('分子系数');disp(num);
disp('分母系数');disp(den);
impres=direct2(num,den,[1zeros(1,4*N1)]);
[p,d]=strucver(impres,2*N1);
disp('实际分子系数');disp(p');
disp('实际分母系数');disp(d');
输出:
分子系数
0.05710-0.114300.0571
分母系数
1.0000-0.50991.2862-0.33500.4479
实际分子系数
0.0571-0.0000-0.11430.00000.0571
实际分母系数
1.0000-0.50991.2862-0.33500.4479
与设计的结构输出一致,验证了正确性。
8.2输入:
Wp=[0.40.5];Ws=[0.10.8];Rp=1;Rs=30;
[N1,Wn1]=buttord(Wp,Ws,Rp,Rs);
[num,den]=butter(N1,Wn1);
disp('分子系数');disp(num);
disp('分母系数');disp(den);
x=[1,zeros(1,4*N1)];
y=filter(num,den,x);
[p,d]=strucver(y,2*N1);
disp('实际分子系数');disp(p');
disp('实际分母系数');disp(d');
输出:
分子系数
0.05710-0.114300.0571
分母系数
1.0000-0.50991.2862-0.33500.4479
实际分子系数
0.05710.0000-0.114300.0571
实际分母系数
1.0000-0.50991.2862-0.33500.4479
与设计的结构输出一致,验证了正确性。
8.3
生成传输函数的级联实现:
num=input('分子=');
den=input('分母=');
[z,p,k]=tf2zp(num,den);
sos=zp2sos(z,p,k);
输入:
分子=[0.05710-0.114300.0571]
分母=[1.0000-0.50991.2862-0.33500.4479]
输出:
sos=
0.05710.11420.05711.00000.08770.6601
1.0000-2.00041.00001.0000-0.59760.6785
仿真结构与验证:
num1=[0.05710.11420.0571];
num2=[1.00000.08770.6601];
den1=[1.0000-2.00041.0000];
den2=[1.0000-0.59760.6785];
x=[1zeros(1,4)];
impres1=direct2(num1,den1,x);
impres2=direct2(num2,den2,x);
[p1,d1]=strucver(impres1,2);
[p2,d2]=strucver(impres2,2);
p=[p1'p2'];
d=[d1'd2'];
disp('实际分子系数');disp(p);
disp('实际分母系数');disp(d);
输出:
实际分子系数
0.05710.11420.05711.00000.08770.6601
实际分母系数
1.0000-2.00041.00001.0000-0.59760.6785
与设计的结构输出(设计的结构输出是sos变量)一致,验证了正确性。
8.5
生成传输函数的并联I型实现:
num=input('分子系数=');
den=input('分母系数=');
[r1,p1,k1]=residuez(num,den);
disp('并联I型')
R1=[r1
(1),r1
(2)];
P1=[p1
(1),p1
(2)];
[b1,a1]=residuez(R1,P1,0);
R2=[r1(3),r1(4)];
P2=[p1(3),p1(4)];
[b2,a2]=residuez(R2,P2,0);
b=[b1b2]
a=[a1a2]
输入:
分子系数=[0.05710-0.114300.0571]
分母系数=[1.0000-0.50991.2862-0.33500.4479]
输出:
并联I型
b=
-0.0479-0.29120-0.02280.34690
a=
1.0000-0.59560.67741.00000.08570.6599
仿真结构与验证:
num1=[-0.0479-0.29120];
num2=[-0.02280.34690];
den1=[1.0000-0.59560.6774];
den2=[1.00000.08570.6599];
x=[1zeros(1,4)];
impres1=direct2(num1,den1,x);
impres2=direct2(num2,den2,x);
[p1,d1]=strucver(impres1,2);
[p2,d2]=strucver(impres2,2);
p=[p1'p2'];
d=[d1'd2'];
disp('实际分子系数');disp(p);
disp('实际分母系数');disp(d);
输出:
实际分子系数
-0.0479-0.2912-0.0000-0.02280.3469-0.0000
实际分母系数
1.0000-0.59560.67741.00000.08570.6599
与设计的结构输出(设计的结构输出是a,b变量)一致,验证了正确性。
8.6生成传输函数的并联II型实现:
num=input('分子系数=');
den=input('分母系数=');
[r1,p1,k1]=residue(num,den);
disp('并联II型')
R1=[r1
(1),r1
(2)];
P1=[p1
(1),p1
(2)];
[b1,a1]=residuez(R1,P1,0);
R2=[r1(3),r1(4)];
P2=[p1(3),p1(4)];
[b2,a2]=residuez(R2,P2,0);
b=[b1b2]
a=[a1a2]
输入:
分子系数=[0.05710-0.114300.0571]
分母系数=[1.0000-0.50991.2862-0.33500.4479]
输出:
并联II型
b=
-0.31760.03190.00000.34670.01550.0000
a=
1.0000-0.59760.67851.00000.08770.6601
仿真结构与验证:
num1=[-0.31760.03190.0000];
num2=[0.34670.01550.0000];
den1=[1.0000-0.59760.6785];
den2=[1.00000.08770.6601];
x=[1zeros(1,4)];
impres1=direct2(num1,den1,x);
impres2=direct2(num2,den2,x);
[p1,d1]=strucver(impres1,2);
[p2,d2]=strucver(impres2,2);
p=[p1'p2'];d=[d1'd2'];
disp('实际分子系数');disp(p);
disp('实际分母系数');disp(d);
输出:
实际分子系数
-0.31760.031900.34670.01550.0000
实际分母系数
1.0000-0.59760.67851.00000.08770.6601
与设计的结构输出(设计的结构输出是a,b变量)一致,验证了正确性。
8.7
x1=[1zeros(1,6)];
q3old=0;q2old=0;q1old=0;
D1=0.357377;D2=0.27083;D3=-0.2;
alpha1=0.02;alpha2=0.352;
alpha3=0.276533;alpha4=-0.19016;
forn=1:
7
w3=x1(n)-D3*q3old;
w2=w3-D2*q2old;
q1new=w2-D1*q1old;
q2new=D1*q1new+q1old;
q3new=D2*w2+q2old;
y1=D3*w3+q3old;
yo(n)=alpha1*y1+alpha2*q3new+alpha3*q2new+alpha4*q1new;
q3old=q3new;q2old=q2new;q1old=q1new;
end
[num,den]=strucver(yo,3);
disp('分子系数=');disp(num');disp('分母系数=');disp(den')
输出:
分子系数=
-0.00000.44000.36000.0200
分母系数=
1.00000.40000.1800-0.2000
运行结果和式8.35的是相同的。
8.10
k=0:
50;w2=0.7*pi;
w1=0.2*pi;
x1=1.5*cos(w1*k);x2=2*cos(w2*k);
x=x1+x2;
[N,Wn]=ellipord(0.25,0.55,0.5,50);
[num,den]=ellip(N,0.5,50,Wn);
y=filter(num,den,x);
subplot(2,1,1);
stem(k,x);grid;
axis([050-44]);
xlabel('时间序号n');
ylabel('振幅');
title('输入序列');
subplot(2,1,2);
stem(k,y);grid;
axis([050-44]);
xlabel('时间序号n');
ylabel('振幅');
title('输出序列');
8.14
num=remez(9,[00.30.51],[1100]);
disp('滤波器系数是:
');disp(num);
impres=filter(num,1,[1zeros(1,9)]);
disp('实际滤波器系数是:
');disp(impres);
输出:
滤波器系数是:
-0.0209-0.09260.00640.19320.37210.37210.1932
0.0064-0.0926-0.0209
实际滤波器系数是:
-0.0209-0.09260.00640.19320.37210.37210.1932
0.0064-0.0926-0.0209
8.15
num=remez(9,[00.30.51],[1100]);
disp('滤波器系数是:
');disp(num);
impres=direct2(num,1,[1zeros(1,9)]);
disp('实际滤波器系数是:
');disp(impres);
输出:
滤波器系数是:
-0.0209-0.09260.00640.19320.37210.37210.1932
0.0064-0.0926-0.0209
实际滤波器系数是:
-0.0209-0.09260.00640.19320.37210.37210.1932
0.0064-0.0926-0.0209
8.16
生成传输函数的级联实现:
num=input('分子=');
den=input('分母=');
[z,p,k]=tf2zp(num,den);
sos=zp2sos(z,p,k)
输入:
分子=[-0.0209-0.09260.00640.19320.37210.37210.19320.0064-0.0926-0.0209]
分母=[1000000000]
输出:
sos=
-0.0209-0.087101.000000
1.0000-0.9623-1.96231.000000
1.0000-0.2696-0.12231.000000
1.00000.19991.00001.000000
1.00001.29691.00001.000000
仿真结构与验证:
num1=[-0.0209-0.08710];
den1=[1.000000];
num2=[1.0000-0.9623-1.9623];
den2=[1.000000];
num3=[1.0000-0.2696-0.1223];
den3=[1.000000];
num4=[1.00000.19991.0000];
den4=[1.000000];
num5=[1.00001.29691.0000];
den5=[1.000000];
x=[1zeros(1,4)];
impres1=direct2(num1,den1,x);
impres2=direct2(num2,den2,x);
impres3=direct2(num3,den3,x);
impres4=direct2(num4,den4,x);
impres5=direct2(num5,den5,x);
[p1,d1]=strucver(impres1,2);
[p2,d2]=strucver(impres2,2);
[p3,d3]=strucver(impres3,2);
[p4,d4]=strucver(impres4,2);
[p5,d5]=strucver(impres5,2);
p=[p1'p2'p3'p4'p5'];
d=[d1'd2'd3'd4'd5'];
disp('实际分子系数');disp(p);
disp('实际分母系数');disp(d);
输出:
实际分子系数
-0.0209-0.087101.0000-0.9623-1.96231.0000-0.2696-0.12231.00000.19991.00001.00001.29691.0000
实际分母系数
100100100100100
与设计的结构输出(设计的结构输出是sos变量)一致,验证了正确性
7、实验思考题及解答
8.1设计的是IIR带通滤波器,指标是:
通带归一化截至频率Wp1=0.4π,Wp2=0.5π,阻带归一化频率Ws1=0.1π,Ws2=0.8π,通带波纹Rp=1dB,最小阻带衰减Rs=30dB。
阶数N=2阶。
为了验证仿真,需计算9个冲激样本,仿真计算出的结构参数和原结构完全一致,所以是正确的。
8.2仿真结构的输出和原结构完全一致,所以是正确的。
8.7运行结果和式8.35的是相同的。
8.9设计的是IIR低通滤波器,指标是:
通带归一化截至频率Wp=0.25π,阻带归一化频率Ws=0.55π,通带波纹Rp=0.5dB,最小阻带衰减Rs=50dB。
阶数N=4阶。
输入信号的角频率是两个正弦波的叠加,分别是0.2π和0.7π,所以叠加后的角频率是1.4π,即频率是0.7(这里是归一化频率)。
8.10低频输入成份会在滤波器的输出出现。
因为这里使用的是IIR滤波器,输出是与输入和此时之前的时刻的输出有关的,而在输入的开头处,得到的输出值个数和输入系统的输入值个数都太少了,不能够满足输出关系式,即此时得到的y值输出并不是真正的系统输出,所以并不是理想的输出结果——正弦曲线。
将其改为高通滤波器之后输出的结果滤除了低频成分,输出了x2[n],和预料的一样。
证明见实验记录的输出。
这里的原因是变成高通滤波器之后,高频成份为0.7π的成份处于通带中,而低频分量的成份处于阻带中,所以滤除了低频。
8.14设计的是FIR低通滤波器,指标是:
通带归一化截至频率Wp=0.3π,阻带归一化频率Ws=0.5π。
阶数N=9阶。
为了计算仿真,需计算10个冲激响应样本。
仿真结构的输出和原结构完全一致,所以是正确的。
8.15仿真结构的输出和原结构完全一致,所以是正确的。
8.16实验代码及输出见实验记录部分,仿真结构的输出和原结构完全一致,所以是正确的。
8、实验结果分析与总结
8.1;8.2;8.3;8.5;8.6通过这几题的实验可以看到直连、级联、并联I、并联II之间的区别,他们的结构完全是不一样的,直连型通过传输函数可直接画出结构框图;级联型是将传输函数变成各个小项相乘的表示结果,然后通过各个小项分别构成一个低阶的滤波器,然后素有的低阶滤波器相互级联来实现;并联型是通过将原传输函数变成几个小项相加的情况,所以信号输入已更改同时并联输入各个小项表示的滤波器,最终将所有低阶滤波器的滤波输出结果叠加到一起就是最终的滤波输出了。
8.7这一道题是关于Gral-Markel级联型滤波器的实现,我们可以看到结果输出和元传输函数的系数完全一样,这里验证了该滤波器的正确性和可行性。
8.9;8.10通过这两道题的实验结果可以看到设计出来的无限冲激响应滤波器的性能的优良之处,我们从图中看到输出的滤波结果是完全正确且没有失真的,两幅图分别表示低通滤波器滤除高频成份和高通滤波器滤除低频成份的输出结果。
但是我们也可以看到输出的结果中开始的地方并不是完好的正弦波形状,这是因为这里使用的是IIR滤波器,输出是与输入和此时之前的时刻的输出有关的,而在输入的开头处
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号 处理 实验