1、第十章上机实验 1 第十章 上机实验 数字信号处理是一门理论和实际密切结合的课程,为深入掌握课程内容,最好在学习理 论的同时,做习题和上机实验。上机实验不仅可以帮助读者深入的理解和消化基本理论, 而且能锻炼初学者的独立解决问题的能力。本章在第二版的基础上编写了六个实验,前五 个实验属基础理论实验,第六个属应用综合实验。 实验一 系统响应及系统稳定性。 实验二 时域采样与频域采样。 实验三 用 FFT 对信号作频谱分析。 实验四 IIR 数字滤波器设计及软件实现。 实验五 FIR 数字滤波器设计与软件实现 实验六 应用实验数字信号处理在双音多频拨号系统中的应用 任课教师根据教学进度,安排学生上机
2、进行实验。建议自学的读者在学习完第一章后作 实验一;在学习完第三、四章后作实验二和实验三;实验四 IIR 数字滤波器设计及软件实 现在。学习完第六章进行;实验五在学习完第七章后进行。实验六综合实验在学习完第七 章或者再后些进行;实验六为综合实验,在学习完本课程后再进行。 10.1 实验一: 系统响应及系统稳定性 1.实验目的 (1)掌握 求系统响应的方法。 (2)掌握时域离散系统的时域特性。 (3)分析、观察及检验系统的稳定性。 2.实验原理与方法 在时域中,描写系统特性的方法是差分方程和单位脉冲响应,在频域可以用系统函数 描述系统特性。已知输入信号可以由差分方程、单位脉冲响应或系统函数求出系
3、统对于该 输入信号的响应,本实验仅在时域求解。在计算机上适合用递推法求差分方程的解,最简 单的方法是采用 MATLAB 语言的工具箱函数 filter 函数。也可以用 MATLAB 语言的工具 箱函数 conv 函数计算输入信号和系统的单位脉冲响应的线性卷积,求出系统的响应。 系统的时域特性指的是系统的线性时不变性质、因果性和稳定性。重点分析实验系统 的稳定性,包括观察系统的暂态响应和稳定响应。 系统的稳定性是指对任意有界的输入信号,系统都能得到有界的系统响应。或者系统 的单位脉冲响应满足绝对可和的条件。系统的稳定性由其差分方程的系数决定。 实际中检查系统是否稳定,不可能检查系统对所有有界的输
4、入信号,输出是否都是有 界输出,或者检查系统的单位脉冲响应满足绝对可和的条件。可行的方法是在系统的输入 端加入单位阶跃序列,如果系统的输出趋近一个常数(包括零) ,就可以断定系统是稳定的 19。系统的稳态输出是指当 时,系统的输出。如果系统稳定,信号加入系统后,系n 统输出的开始一段称为暂态效应,随 n 的加大,幅度趋于稳定,达到稳态输出。 注意在以下实验中均假设系统的初始状态为零。 3实验内容及步骤 (1)编制程序,包括产生输入信号、单位脉冲响应序列的子程序,用 filter 函数或 conv 函数求解系统输出响应的主程序。程序中要有绘制信号波形的功能。 (2)给定一个低通滤波器的差分方程为
5、 第十章上机实验 2 )1(9.0)(5.0)(.)( nyxny 输入信号 81Rx )(2u a) 分别求出系统对 和 的响应序列,并画出其波形。)(81nx)(2nux b) 求出系统的单位冲响应,画出其波形。 (3)给定系统的单位脉冲响应为 )()(101nRh )3()2(5.)1.22 n 用线性卷积法分别求系统 h1(n)和 h2(n)对 的输出响应,并画出波81Rx 形。 (4)给定一谐振器的差分方程为 )2()(980.)(8237.1)( 00 nxbnynyny 令 ,谐振器的谐振频率为 0.4rad。490/b a) 用实验方法检查系统是否稳定。输入信号为 时,画出系统
6、输出波形。)(u b) 给定输入信号为 )4.0sin()1.0sin()x 求出系统的输出响应,并画出其波形。 4思考题 (1) 如果输入信号为无限长序列,系统的单位脉冲响应是有限长序列,可否用线性卷 积法求系统的响应? 如何求? (2)如果信号经过低通滤波器,把信号的高频分量滤掉,时域信号会有何变化,用前 面 第一个实验结果进行分析说明。 5实验报告要求 (1)简述在时域求系统响应的方法。 (2)简述通过实验判断系统稳定性的方法。分析上面第三个实验的稳定输出的波形。 (3)对各实验所得结果进行简单分析和解释。 (4)简要回答思考题。 (5)打印程序清单和要求的各信号波形。 10.1.2 实
7、验程序清单 %实验 1:系统响应及系统稳定性 close all;clear all 第十章上机实验 3 %=内容 1:调用 filter 解差分方程,由系统对 u(n)的响应判断稳定性= A=1,-0.9;B=0.05,0.05; %系统差分方程系数向量 B 和 A x1n=1 1 1 1 1 1 1 1 zeros(1,50); %产生信号 x1(n)=R8(n) x2n=ones(1,128); %产生信号 x2(n)=u(n) hn=impz(B,A,58); %求系统单位脉冲响应 h(n) subplot(2,2,1);y=h(n);tstem(hn,y); %调用函数 tstem
8、绘图 title(a) 系统单位脉冲响应 h(n);box on y1n=filter(B,A,x1n); %求系统对 x1(n)的响应 y1(n) subplot(2,2,2);y=y1(n);tstem(y1n,y); title(b) 系统对 R8(n)的响应 y1(n);box on y2n=filter(B,A,x2n); %求系统对 x2(n)的响应 y2(n) subplot(2,2,4);y=y2(n);tstem(y2n,y); title(c) 系统对 u(n)的响应 y2(n);box on %=内容 2:调用 conv 函数计算卷积= x1n=1 1 1 1 1 1 1
9、 1 ; %产生信号 x1(n)=R8(n) h1n=ones(1,10) zeros(1,10); h2n=1 2.5 2.5 1 zeros(1,10); y21n=conv(h1n,x1n); y22n=conv(h2n,x1n); figure(2) subplot(2,2,1);y=h1(n);tstem(h1n,y); %调用函数 tstem 绘图 title(d) 系统单位脉冲响应 h1(n);box on subplot(2,2,2);y=y21(n);tstem(y21n,y); title(e) h1(n)与 R8(n)的卷积 y21(n);box on subplot(2
10、,2,3);y=h2(n);tstem(h2n,y); %调用函数 tstem 绘图 title(f) 系统单位脉冲响应 h2(n);box on subplot(2,2,4);y=y22(n);tstem(y22n,y); title(g) h2(n)与 R8(n)的卷积 y22(n);box on %=内容 3:谐振器分析 = un=ones(1,256); %产生信号 u(n) n=0:255; xsin=sin(0.014*n)+sin(0.4*n); %产生正弦信号 A=1,-1.8237,0.9801;B=1/100.49,0,-1/100.49; %系统差分方程系数向量 B 和
11、A y31n=filter(B,A,un); %谐振器对 u(n)的响应 y31(n) y32n=filter(B,A,xsin); %谐振器对 u(n)的响应 y31(n) figure(3) subplot(2,1,1);y=y31(n);tstem(y31n,y); title(h) 谐振器对 u(n)的响应 y31(n);box on subplot(2,1,2);y=y32(n);tstem(y32n,y); title(i) 谐振器对正弦信号的响应 y32(n);box on 10.1.3 实验程序运行结果及分析讨论 程序运行结果如图 10.1.1 所示。 实验内容(2)系统的单位
12、冲响应、系统对 和 的响应序列)(81nRx)(2nux 第十章上机实验 4 分别如图(a)、(b)和(c)所示; 实验内容(3)系统 h1(n)和 h2(n)对 的输出响应分别如图(e) 和(g) 所示;)(81nRx 实验内容(4)系统对 和 的响应序列分别如图(h)(nu)4.0si.0si 和(i)所示。由图 (h)可见,系统对 的响应逐渐衰减到零,所以系统稳定。由图(i)可见, 系统对 的稳态响应近似为正弦序列 ,这一结)4.si()01.si()nx in(.) 论验证了该系统的谐振频率是 0.4 rad。 0 20 40 0.02 0.04 0.06 0.08 0.1 n h(n
13、 ) (a) 与 与 与 与 与 与 与 与 h(n) 0 20 40 0.2 0.4 0.6 n y1( n) (b) 与 与 与 R8(n)与 与 与 y1(n) 0 50 100 0.2 0.4 0.6 0.8 1 n y2( n) (c) 与 与 与 u(n)与 与 与 y2(n) 第十章上机实验 5 0 5 10 150 0.5 1 n h1( n) (d) 与 与 与 与 与 与 与 与 h1(n) 0 10 200 2 4 6 8 n y21 (n) (e) h1(n)与 R8(n)与 与 与 y21(n) 0 5 100 1 2 3 n h2( n) (f) 与 与 与 与 与
14、 与 与 与 h2(n) 0 5 10 15 200 2 4 6 8 n y22 (n) (g) h2(n)与 R8(n)与 与 与 y22(n) 0 50 100 150 200 250 -0.04 -0.02 0 0.02 0.04 n y31 (n) (h) 与 与 与 与 u(n)与 与 与 y31(n) 0 50 100 150 200 250 -0.5 0 0.5 1 n y32 (n) (i) 与 与 与 与 与 与 与 与 与 与 与 y32(n) 图 10.1.1 10.1.4 简答思考题 (1) 如果输入信号为无限长序列,系统的单位脉冲响应是有限长序列,可否用线性卷 第十章
15、上机实验 6 积法求系统的响应。对输入信号序列分段;求单位脉冲响应 h(n)与各段的卷积;将 各段卷积结果相加。具体实现方法有第三章介绍的重叠相加法和重叠保留法。 (2)如果信号经过低通滤波器,把信号的高频分量滤掉,时域信号的剧烈变化将被平滑, 由实验内容(1)结果图 10.1.1(a)、(b)和(c) 可见,经过系统低通滤波使输入信号 、()n 和 的阶跃变化变得缓慢上升与下降。)(8nRx)(2nux 10.2 实验二 时域采样与频域采样 10.2.1 实验指导 1. 实验目的 时域采样理论与频域采样理论是数字信号处理中的重要理论。要求掌握模拟信号采样 前后频谱的变化,以及如何选择采样频率
16、才能使采样后的信号不丢失信息;要求掌握频率 域采样会引起时域周期化的概念,以及频率域采样定理及其对频域采样点数选择的指导作 用。 2. 实验原理与方法 时域采样定理的要点是: a) 对模拟信号 以间隔 T 进行时域等间隔理想采样,形成的采样信号的频谱)(txa 是原模拟信号频谱 以采样角频率 ( )为)(jX()aXjsT/2 周期进行周期延拓。公式为: )()(txFTjaa )(1nsajn b) 采样频率 必须大于等于模拟信号最高频率的两倍以上,才能使采样信号的s 频谱不产生频谱混叠。 利用计算机计算上式并不方便,下面我们导出另外一个公式,以便用计算机上进行实验。 理想采样信号 和模拟信
17、号 之间的关系为:)(txa)(txa naTttt 对上式进行傅立叶变换,得到: dtenttxjXjnaa )()( tTtjna)() 在上式的积分号内只有当 时,才有非零值,因此:Tt 第十章上机实验 7 nnTjaaexjX)()( 上式中,在数值上 ,再将 代入,得到:Txa nnjaexj)()( 上式的右边就是序列的傅立叶变换 ,即jX Tjaej)()( 上式说明理想采样信号的傅立叶变换可用相应的采样序列的傅立叶变换得到,只要将自变 量 用 代替即可。T 频域采样定理的要点是: a) 对信号 x(n)的频谱函数 X(ej )在0,2 上等间隔采样 N 点,得到2() ,0,1
18、,jNkNXke 则 N 点 IDFT 得到的序列就是原序列 x(n)以 N 为周期进行周期延拓后的主值() 区序列,公式为: ()IDFT()()(NNNixnXkxniR b) 由上式可知,频域采样点数 N 必须大于等于时域离散信号的长度 M(即 NM),才 能使时域不产生混叠,则 N 点 IDFT 得到的序列 就是原序列 x(n),即()()Nxn =x(n)。如果 NM, 比原序列尾部多 N-M 个零点;如果 N limit, break, end % 查找列号 end for r=1:4; if val(r) limit, break, end % 查找行号 end TNr=TNr+
19、tm(r,s-4)*10(6-l); end disp(接收端检测到的号码为:) % 显示接收到的字符 disp(TNr) 运行程序,根据提示键入 6 位电话号码 123456,回车后可以听见 6 位电话号码对应的 DTMF 信号的声音,并输出相应的 6 幅频谱图如图 10.10.1 所示,左上角的第一个图在 k=18 和 k=31 两点出现峰值,所以对应第一位号码数字 1。最后显示检测到的电话号码 123456。 第十章上机实验 34 图 10.6.1 6 位电话号码 123456 的 DTMF 信号在 8 个近似基频点的 DFT 幅度 (1) 实验内容 运行仿真程序 exp6.m,任意送入
20、 6 位电话号码,打印出相应的幅度谱。观察程 序运行结果,对照表 10.10.1 和表 10.10.2,判断程序谱分析的正确性。 分析该仿真程序,将产生、检测和识别 6 位电话号码的程序改为能产生、检测 和识别 8 位电话号码的程序,并运行一次,打印出相应的幅度谱和 8 位电话号码。 5. 实验报告 (1) 分析程序 exp8.m,画出仿真程序流程图。 (2) 打印 6 位和 8 位电话号码 DTMF 信号的幅度谱。 (3) 简述 DTMF 信号的参数:采样频率、DFT 的变换点数以及观测时间的确定原则。 10.6.2 实验程序清单及运行结果 1、实验内容 6 位电话号码的 DTMF 双频拨号
21、信号的生成和检测程序清单 exp6.m 已 经在实验指导中给出。运行程序,并输入 6 位电话号码 123456,则输出相应的 6 幅频谱图 如图 10.10.1 所示,左上角的第一个图在 k=18 和 k=31 两点出现峰值,所以对应第一位号 码数字 1。其他 5 个图请读者对照表 10.10.1 和表 10.10.2,确定确定其对应的数字,验证程 序输出的电话号码“123456”是正确的。 2、实验内容 只要对 6 位电话号码检测程序 exp6.m 作如下修改,即可产生、检测和 识别 8 位电话号码。 (1)将第 8 行改为 TN=input(键入 8 位电话号码= ); (2)将第 101
22、2 行改为 for l=1:8; d=fix(TN/10(8-l); TN=TN-d*10(8-l); (3)将第 26 行改为 subplot(4,2,l); 第十章上机实验 35 (4)将第 36 行改为 TNr=TNr+tm(r,s-4)*10(8-l); 修改后的程序为 exp6_8.m,程序清单见程序集。运行程序 exp6_8.m,输入输入 8 位 电话号码 87654321,则输出相应的 8 幅频谱图如图 10.10.2 所示。最后显示检测到的 电话号码 87654321。 10 20 30 40 500 50 100 k |X( k)| 10 20 30 40 500 50 100 k |X( k)| 10 20 30 40 500 50 100 k |X( k)| 10 20 30 40 500 50 100 k |X( k)| 10 20 30 40 500 50 100 k |X( k)| 10 20 30 40 500 50 100 k |X( k)| 10 20 30 40 500 50 100 k |X( k)| 10 20 30 40 500 50 100 k |X( k)| 图 10.6.1 8 位电话号码 87654321 的 DTMF 信号在 8 个近似基频点的 DFT 幅度