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)给定一个低通滤波器的差分方程为第十章上机实验2)1(9.0)(5.0)(.)( nyxny输入信号 81Rx)(
5、2ua) 分别求出系统对 和 的响应序列,并画出其波形。)(81nx)(2nuxb) 求出系统的单位冲响应,画出其波形。(3)给定系统的单位脉冲响应为)()(101nRh)3()2(5.)1.22 n用线性卷积法分别求系统 h1(n)和 h2(n)对 的输出响应,并画出波81Rx形。(4)给定一谐振器的差分方程为)2()(980.)(8237.1)( 00 nxbnynyny令 ,谐振器的谐振频率为 0.4rad。490/ba) 用实验方法检查系统是否稳定。输入信号为 时,画出系统输出波形。)(ub) 给定输入信号为)4.0sin()1.0sin()x求出系统的输出响应,并画出其波形。4思考题
6、(1) 如果输入信号为无限长序列,系统的单位脉冲响应是有限长序列,可否用线性卷积法求系统的响应? 如何求?(2)如果信号经过低通滤波器,把信号的高频分量滤掉,时域信号会有何变化,用前面 第一个实验结果进行分析说明。5实验报告要求(1)简述在时域求系统响应的方法。(2)简述通过实验判断系统稳定性的方法。分析上面第三个实验的稳定输出的波形。(3)对各实验所得结果进行简单分析和解释。(4)简要回答思考题。(5)打印程序清单和要求的各信号波形。10.1.2 实验程序清单%实验 1:系统响应及系统稳定性close all;clear all第十章上机实验3%=内容 1:调用 filter 解差分方程,由
7、系统对 u(n)的响应判断稳定性=A=1,-0.9;B=0.05,0.05; %系统差分方程系数向量 B 和 Ax1n=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 绘图title(a) 系统单位脉冲响应 h(n);box ony1n=filter(B,A,x1n); %求系统对 x1(n)的响应 y1(n)subplot(2,
8、2,2);y=y1(n);tstem(y1n,y);title(b) 系统对 R8(n)的响应 y1(n);box ony2n=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 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,
9、x1n);y22n=conv(h2n,x1n);figure(2)subplot(2,2,1);y=h1(n);tstem(h1n,y); %调用函数 tstem 绘图title(d) 系统单位脉冲响应 h1(n);box onsubplot(2,2,2);y=y21(n);tstem(y21n,y);title(e) h1(n)与 R8(n)的卷积 y21(n);box onsubplot(2,2,3);y=h2(n);tstem(h2n,y); %调用函数 tstem 绘图title(f) 系统单位脉冲响应 h2(n);box onsubplot(2,2,4);y=y22(n);tstem
10、(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 和 Ay31n=filter(B,A,un); %谐振器对 u(n)的响应 y31(n)y32n=filter(B,A,xsin); %谐振器对 u(n)的响应 y31(n)figure(3)subplot(2,1,1);
11、y=y31(n);tstem(y31n,y);title(h) 谐振器对 u(n)的响应 y31(n);box onsubplot(2,1,2);y=y32(n);tstem(y32n,y);title(i) 谐振器对正弦信号的响应 y32(n);box on10.1.3 实验程序运行结果及分析讨论程序运行结果如图 10.1.1 所示。实验内容(2)系统的单位冲响应、系统对 和 的响应序列)(81nRx)(2nux第十章上机实验4分别如图(a)、(b)和(c)所示;实验内容(3)系统 h1(n)和 h2(n)对 的输出响应分别如图(e) 和(g) 所示;)(81nRx实验内容(4)系统对 和
12、的响应序列分别如图(h)(nu)4.0si.0si和(i)所示。由图 (h)可见,系统对 的响应逐渐衰减到零,所以系统稳定。由图(i)可见,系统对 的稳态响应近似为正弦序列 ,这一结)4.si()01.si()nx in(.)论验证了该系统的谐振频率是 0.4 rad。0 20 400.020.040.060.080.1nh(n)(a) 与 与 与 与 与 与 与 与 h(n)0 20 400.20.40.6ny1(n)(b) 与 与 与 R8(n)与 与 与 y1(n)0 50 1000.20.40.60.81ny2(n)(c) 与 与 与 u(n)与 与 与 y2(n)第十章上机实验50
13、5 10 1500.51nh1(n)(d) 与 与 与 与 与 与 与 与 h1(n)0 10 2002468ny21(n)(e) h1(n)与 R8(n)与 与 与 y21(n)0 5 100123nh2(n)(f) 与 与 与 与 与 与 与 与 h2(n)0 5 10 15 2002468ny22(n)(g) h2(n)与 R8(n)与 与 与 y22(n)0 50 100 150 200 250-0.04-0.0200.020.04ny31(n)(h) 与 与 与 与 u(n)与 与 与 y31(n)0 50 100 150 200 250-0.500.51ny32(n)(i) 与 与
14、 与 与 与 与 与 与 与 与 与 y32(n)图 10.1.110.1.4 简答思考题(1) 如果输入信号为无限长序列,系统的单位脉冲响应是有限长序列,可否用线性卷第十章上机实验6积法求系统的响应。对输入信号序列分段;求单位脉冲响应 h(n)与各段的卷积;将各段卷积结果相加。具体实现方法有第三章介绍的重叠相加法和重叠保留法。(2)如果信号经过低通滤波器,把信号的高频分量滤掉,时域信号的剧烈变化将被平滑,由实验内容(1)结果图 10.1.1(a)、(b)和(c) 可见,经过系统低通滤波使输入信号 、()n和 的阶跃变化变得缓慢上升与下降。)(8nRx)(2nux10.2 实验二 时域采样与频
15、域采样10.2.1 实验指导1. 实验目的时域采样理论与频域采样理论是数字信号处理中的重要理论。要求掌握模拟信号采样前后频谱的变化,以及如何选择采样频率才能使采样后的信号不丢失信息;要求掌握频率域采样会引起时域周期化的概念,以及频率域采样定理及其对频域采样点数选择的指导作用。2. 实验原理与方法时域采样定理的要点是:a) 对模拟信号 以间隔 T 进行时域等间隔理想采样,形成的采样信号的频谱)(txa是原模拟信号频谱 以采样角频率 ( )为)(jX()aXjsT/2周期进行周期延拓。公式为:)()(txFTjaa )(1nsajnb) 采样频率 必须大于等于模拟信号最高频率的两倍以上,才能使采样
16、信号的s频谱不产生频谱混叠。利用计算机计算上式并不方便,下面我们导出另外一个公式,以便用计算机上进行实验。理想采样信号 和模拟信号 之间的关系为:)(txa)(txanaTttt对上式进行傅立叶变换,得到:dtenttxjXjnaa )()(tTtjna)() 在上式的积分号内只有当 时,才有非零值,因此:Tt第十章上机实验7nnTjaaexjX)()(上式中,在数值上 ,再将 代入,得到:Txannjaexj)()(上式的右边就是序列的傅立叶变换 ,即jXTjaej)()(上式说明理想采样信号的傅立叶变换可用相应的采样序列的傅立叶变换得到,只要将自变量 用 代替即可。T频域采样定理的要点是:
17、a) 对信号 x(n)的频谱函数 X(ej )在0,2 上等间隔采样 N 点,得到2() ,0,1,jNkNXke则 N 点 IDFT 得到的序列就是原序列 x(n)以 N 为周期进行周期延拓后的主值()区序列,公式为:()IDFT()()(NNNixnXkxniRb) 由上式可知,频域采样点数 N 必须大于等于时域离散信号的长度 M(即 NM),才能使时域不产生混叠,则 N 点 IDFT 得到的序列 就是原序列 x(n),即()()Nxn=x(n)。如果 NM, 比原序列尾部多 N-M 个零点;如果 NM,z 则()Nxn()xn=IDFT 发生了时域混叠失真,而且 的长度 N 也比 x(n
18、)的长()NXk()Nx度 M 短,因此。 与 x(n)不相同。x在数字信号处理的应用中,只要涉及时域或者频域采样,都必须服从这两个采样理论的要点。对比上面叙述的时域采样原理和频域采样原理,得到一个有用的结论,这两个采样理论具有对偶性:“时域采样频谱周期延拓,频域采样时域信号周期延拓” 。因此放在一起进行实验。3. 实验内容及步骤(1)时域采样理论的验证。给定模拟信号, )(sin)(0tuAetxta第十章上机实验8式中 A=444.128, =50 , =50 rad/s,它的幅频特性曲线如图20210.2.1图 10.2.1 的幅频特性曲线)(txa现用 DFT(FFT)求该模拟信号的幅
19、频特性,以验证时域采样理论。安照 的幅频特性曲线,选取三种采样频率,即 =1kHz,300 Hz,200 Hz。)(txa sF观测时间选 。msTp50为使用 DFT,首先用下面公式产生时域离散信号,对三种采样频率,采样序列按顺序用 , , 表示。)(1nx2)(3nx)(si(0nTuAeTTa因为采样频率不同,得到的 , , 的长度不同, 长度(点数))1x23x用公式 计算。选 FFT 的变换点数为 M=64,序列长度不够 64 的尾部加零。spFNX(k)=FFTx(n) , k=0,1,2,3,-,M-1式中 k 代表的频率为 。2要求: 编写实验程序,计算 、 和 的幅度特性,并
20、绘图显示。观察)(1nx2)(3nx分析频谱混叠失真。(2)频域采样理论的验证。给定信号如下:其 它02614273)(nnx编写程序分别对频谱函数 在区间 上等间隔采样 32()FT()jXex,0第十章上机实验9和 16 点,得到 :)()(1632kX和3223 ,0,123jke16216() ,5jkXk再分别对 进行 32 点和 16 点 IFFT,得到 :1632和 )(1632nx和32()IFT() ,0,1,xnkn1616 5X分别画出 、 的幅度谱,并绘图显示 x(n)、 的波形,()jXe)()(32k和 )(1632nx和进行对比和分析,验证总结频域采样理论。提示:
21、频域采样用以下方法容易变程序实现。 直接调用 MATLAB 函数 fft 计算 就得到 在 的3232()FT()Xkxn()jXe2,032 点频率域采样 抽取 的偶数点即可得到 在 的 16 点频率域采样 ,即32()Xk()je,016()k。16() ,0,1,5k当然也可以按照频域采样理论,先将信号 x(n)以 16 为周期进行周期延拓,取其主 3值区(16 点) ,再对其进行 16 点 DFT(FFT),得到的就是 在 的 16 点频率域采()jXe2,0样 。16()Xk4思考题:如果序列 x(n)的长度为 M,希望得到其频谱 在 上的 N 点等间隔采样,()je2,0当 NM
22、时, 如何用一次最少点数的 DFT 得到该频谱采样?5. 实验报告及要求a) 运行程序打印要求显示的图形, 。b) 分析比较实验结果,简述由实验得到的主要结论c) 简要回答思考题d) 附上程序清单和有关曲线。10.2.2 实验程序清单1 时域采样理论的验证程序清单% 时域采样理论验证程序 exp2a.m第十章上机实验10Tp=64/1000; %观察时间 Tp=64 微秒%产生 M 长采样序列 x(n)% Fs=1000;T=1/Fs;Fs=1000;T=1/Fs;M=Tp*Fs;n=0:M-1;A=444.128;alph=pi*50*20.5;omega=pi*50*20.5;xnt=A*
23、exp(-alph*n*T).*sin(omega*n*T);Xk=T*fft(xnt,M); %M 点 FFTxnt)yn=xa(nT);subplot(3,2,1);tstem(xnt,yn); %调用自编绘图函数 tstem 绘制序列图box on;title(a) Fs=1000Hz);k=0:M-1;fk=k/Tp;subplot(3,2,2);plot(fk,abs(Xk);title(a) T*FTxa(nT),Fs=1000Hz);xlabel(f(Hz);ylabel(幅度);axis(0,Fs,0,1.2*max(abs(Xk)%=% Fs=300Hz 和 Fs=200Hz
24、 的程序与上面 Fs=1000Hz 完全相同。2 频域采样理论的验证程序清单%频域采样理论验证程序 exp2b.mM=27;N=32;n=0:M;%产生 M 长三角波序列 x(n)xa=0:floor(M/2); xb= ceil(M/2)-1:-1:0; xn=xa,xb;Xk=fft(xn,1024); %1024 点 FFTx(n), 用于近似序列 x(n)的 TFX32k=fft(xn,32) ;%32 点 FFTx(n)x32n=ifft(X32k); %32 点 IFFTX32(k)得到 x32(n)X16k=X32k(1:2:N); %隔点抽取 X32k 得到 X16(K)x16
25、n=ifft(X16k,N/2); %16 点 IFFTX16(k)得到 x16(n)subplot(3,2,2);stem(n,xn,.);box ontitle(b) 三角波序列 x(n);xlabel(n);ylabel(x(n);axis(0,32,0,20)k=0:1023;wk=2*k/1024; %subplot(3,2,1);plot(wk,abs(Xk);title(a)FTx(n);xlabel(omega/pi);ylabel(|X(ejomega)|);axis(0,1,0,200)k=0:N/2-1;subplot(3,2,3);stem(k,abs(X16k),.)
26、;box ontitle(c) 16 点频域采样);xlabel(k);ylabel(|X_1_6(k)|);axis(0,8,0,200)n1=0:N/2-1;subplot(3,2,4);stem(n1,x16n,.);box ontitle(d) 16 点 IDFTX_1_6(k);xlabel(n);ylabel(x_1_6(n);axis(0,32,0,20)k=0:N-1;subplot(3,2,5);stem(k,abs(X32k),.);box ontitle(e) 32 点频域采样);xlabel(k);ylabel(|X_3_2(k)|);axis(0,16,0,200)n1=0:N-1;subplot(3,2,6);stem(n1,x32n,.);box ontitle(f) 32 点 IDFTX_3_2(k);xlabel(n);ylabel(x_3_2(n);axis(0,32,0,20)