吉林大学珠海学院 《数字信号处理》 实验指导书 编写:刘梦亭 审核: 适用专业:微电子学专业 电子信息科学与技术 自动化专业 通信工程笠 电子信息与工程系 2019年9月
吉林大学珠海学院 《数 字 信 号 处 理》 实 验 指 导 书 编写: 刘梦亭 审核: 适用专业:微电子学专业 电子信息科学与技术 自动化专业 通信工程等 电子信息与工程系 2019 年 9 月
数字信号处理实验指导书 前言 《数字信号处理》是一门理论与实践并重的课程。它主要研究数 字序列信号的表示方法,并对信号进行运算,以提取包含在其中的特 殊信息。近年来,由于在研究及应用两方面均取得了进展,数字信号 处理领域已经日趋成熟,如今,几乎所有大学在本科高年级及研究生 一年级都开设了本主题至少一门或更多的课程。为了深入地掌握课程 内容,应当在学习理论的同时,作习题和上机实验。上机实验不仅可 以帮组读者深入地理解和消化基本理论,而且能锻炼初学者的独立解 决问题的能力。本实验指导书根据课程重点编写了六个实验。 本实验指导书是教科书的教学内容的很好补充。首先是通过实验 加深理解在课堂上获得的理论知识,将理论知识形象化:同时学习 MATLAB在信号处理领域的使用,加强动手能力,积累实践经验;另 外通过一些综合性实验达到综合分析、运用已学课程知识点的效果。 本课程实验包含六个必修实验:实验一《离散时间信号分析》与 实验二《离散时间系统分析》为验证性实验,使学生掌握计算离散卷 积方法和MATLAB语言实现;实验三《离散系统的忆域分析》为设计性 实验,掌握离散系统的频率特性及其幅度特性、相位特性的物理意义: 深入理解离散系统频率特性的对称性和周期性;实验四《FFT频谱分 析及应用》为设计性实验,可进一步加深对FFT的理解,熟悉应用FFT 对典型信号进行频谱分析的方法。实验五《IIR数字滤波器的设计》 为综合性,可使学生掌握脉冲响应不变法和双线性变换法设计IIR数 字滤波器的原理和方法,了解双线性变换法和脉冲响应不变法的特点
数字信 号 处 理 实 验 指 导 书 2 前 言 《数字信号处理》是一门理论与实践并重的课程。它主要研究数 字序列信号的表示方法,并对信号进行运算,以提取包含在其中的特 殊信息。近年来,由于在研究及应用两方面均取得了进展,数字信号 处理领域已经日趋成熟,如今,几乎所有大学在本科高年级及研究生 一年级都开设了本主题至少一门或更多的课程。为了深入地掌握课程 内容,应当在学习理论的同时,作习题和上机实验。上机实验不仅可 以帮组读者深入地理解和消化基本理论,而且能锻炼初学者的独立解 决问题的能力。本实验指导书根据课程重点编写了六个实验。 本实验指导书是教科书的教学内容的很好补充。首先是通过实验 加深理解在课堂上获得的理论知识,将理论知识形象化;同时学习 MATLAB 在信号处理领域的使用,加强动手能力,积累实践经验;另 外通过一些综合性实验达到综合分析、运用已学课程知识点的效果。 本课程实验包含六个必修实验:实验一《离散时间信号分析》与 实验二《离散时间系统分析》为验证性实验,使学生掌握计算离散卷 积方法和MATLAB语言实现;实验三《离散系统的Z域分析》为设计性 实验,掌握离散系统的频率特性及其幅度特性、相位特性的物理意义; 深入理解离散系统频率特性的对称性和周期性; 实验四《FFT频谱分 析及应用》为设计性实验,可进一步加深对FFT的理解,熟悉应用FFT 对典型信号进行频谱分析的方法。实验五《IIR数字滤波器的设计》 为综合性,可使学生掌握脉冲响应不变法和双线性变换法设计IIR数 字滤波器的原理和方法,了解双线性变换法和脉冲响应不变法的特点
数字信号处理实验指导书 和区别。实验六《FIR数字滤波器的设计》为综合性实验,使学生掌 握用窗函数法和频率采样法设计FIR数字滤波器的原理和方法,了解 不同窗函数对滤波器性能的影响。 本指导书适合微电子学专业、电子信息科学与技术专业,通信工 程专业及自动化专业使用,同时也可供开设了《数字信号处理》课程 的其他相关专业使用
数字信 号 处 理 实 验 指 导 书 3 和区别。实验六《FIR数字滤波器的设计》为综合性实验,使学生掌 握用窗函数法和频率采样法设计FIR数字滤波器的原理和方法,了解 不同窗函数对滤波器性能的影响。 本指导书适合微电子学专业、电子信息科学与技术专业,通信工 程专业及自动化专业使用,同时也可供开设了《数字信号处理》课程 的其他相关专业使用
目录 实验一:离散时间信号分析1 实验二:离散时间系统分析5 实验三:离散系统的Z域分析11 实验四:FPT频谱分析及应用.16 实验五:IIR数字滤波器的设计.19 实验六:FIR数字滤波器的设计23 附录:MATLAB基本操作及常用命令26
目 录 实验一:离散时间信号分析. 1 实验二:离散时间系统分析. 5 实验三:离散系统的 Z 域分析. 11 实验四:FFT 频谱分析及应用. 16 实验五:IIR 数字滤波器的设计. 19 实验六:FIR 数字滤波器的设计. 23 附录: MATLAB 基本操作及常用命令. 26
实验一:离散时间信号分析 实验学时:2学时 实验类型:验证 实验要求:必修 一、实验目的 I)掌握典型离散时间信号的MATLAB实现 2)掌握离散信号的计算方法: 3)学会差分方程的迭代解法: 4)了解全响应、零输入响应、零状态响应和初始状态的物理意义和具体求法: 二、实验内容 1、典型离散信号的MATLAB实现: (1)正弦序列:sin(π/6)k的MATLAB源程序 k=0:39: fk=sin(pi/6*k): stem(k,fk) 18 0.6 0.2
1 实验一:离散时间信号分析 实验学时:2 学时 实验类型:验证 实验要求:必修 一、实验目的 1) 掌握典型离散时间信号的 MATLAB 实现 2) 掌握离散信号的计算方法; 3) 学会差分方程的迭代解法; 4) 了解全响应、零输入响应、零状态响应和初始状态的物理意义和具体求法; 二、实验内容 1、典型离散信号的 MATLAB 实现: (1)正弦序列: sin( 6) k 的 MATLAB 源程序 k=0:39; fk=sin(pi/6*k); stem(k,fk)
数字信号处理实验指导书 (2)指数序列:一般形式为c:c*ak 编写绘制离散时间实指数序列波形的函数 functiondszsu(c.a.k1.k2) %c:指数序列的幅度 %a:指数序列的底数 %1:绘制序列的起始序号 %k2:绘制序列的终止序号 k=kl:k2; x=c*(a.^k). stem(k.x,'filled') hold on plot([k1,k2].[O,0]) 西数。实现实行省黄影B程序狂下 (其中a值分别为程- %离散时间实指数序列实现程序 2k] subplot 221; d3z3u(1,5/4,0,20) xlabel('k'); tit1e('f1[k]'): subplot 222; dszsu(1,3/4,0,20): subplot 223; dszsu(1,-5/4,0,20): k xlabel('k'); title('f3[k]'); subplot 224 dszsu(1,-3/4,0,20): xlabel('k'); tit1e('f4[k】):
数字信 号 处 理 实 验 指 导 书 2 (2)指数序列:一般形式为 k ca :c*a.^k 编写绘制离散时间实指数序列波形的函数 function dszsu(c,a,k1,k2) %c: 指数序列的幅度 %a:指数序列的底数 %k1:绘制序列的起始序号 %k2:绘制序列的终止序号 k=k1:k2; x=c*(a.^k); stem(k,x,’filled’) hold on plot([k1,k2],[0,0]) hold off 利用上述函数,实现实指数波形 MATLAB 程序如下: (其中 a 值分别为 5 3 5 3 , , , 4 4 4 4 − − ) %离散时间实指数序列实现程序 subplot 221; dszsu(1,5/4,0,20); xlabel('k'); title('f1[k]'); subplot 222; dszsu(1,3/4,0,20); xlabel('k'); title('f2[k]'); subplot 223; dszsu(1,-5/4,0,20); xlabel('k'); title('f3[k]'); subplot 224; dszsu(1,-3/4,0,20); xlabel('k'); title('f4[k]');
数字信号处理实验指导书 (3)单位抽样序列 k=-30:30; delta=[zeros(1,30),1,zeros(1,30)]: stem(k,delta) 09 0.8 0.7 06 05 04 0.3 02 (4)单位阶跃序列 k=-30:30: uk=[zeros(1,30),ones(1,31)]: stem(k,uk) 09 0.8 07 06 0.4 0.3 0.2 01
数字信 号 处 理 实 验 指 导 书 3 (3)单位抽样序列 k=-30:30; delta=[zeros(1,30),1,zeros(1,30)]; stem(k,delta) (4) 单位阶跃序列 k=-30:30; uk=[zeros(1,30),ones(1,31)]; stem(k,uk)
数字信号处理实验指导书 2、离散时间信号的计算 (1)信号的加 数学描述x(m)=x()+x,(m) MATLAB实现X=XI+X2 设[x10=[10.70.40.10]:x20=[0.10.30.50.70.91:】 (2)信号的乘 数学描述x()=x(m*x(n MATLAB实现X=X1.*X2 设[x10=[10.70.40.10]:x20=[0.10.30.50.70.91]:] (3)计算卷积y=conv(x,h) 用MATLAB计算序列{-201-13}和序列120-1}的离散卷积。 首先用手工计算,然后用MATLAB编程验证。 三、实验组织运行要求 1、学生在进行实验前必须进行充分的预习,熟悉实验内容 2、学生根据实验要求,读懂并理解相应的程序: 3、学生严格遵守实验室的各项规章制度,注意人身和设备安全,配合和服从实 验室人员管理; 4、教师在学生实验过程中予以必要的辅导,独立完成实验: 5、采用集中授课形式。 四、实验条件 1、具有WINDOWS982OO0NTXP操作系统的计算机一台: 2.、MATLAB编程软件。 五、实验报告要求 1、简述实验目的和实验原理,先人工计算求出你选定的序列x()、h)的卷积 结果并与计算机计算结果相比较,给出笔算和计算机计算的差分方程结果对照 表。 2、编写以上运算的MATLAB程序
数字信 号 处 理 实 验 指 导 书 4 2、离散时间信号的计算 (1)信号的加 数学描述 ( ) ( ) ( ) x n = x1 n + x2 n MATLAB 实现 X = X1+ X 2 设[ x10=[1 0.7 0.4 0.1 0]; x20=[0.1 0.3 0.5 0.7 0.9 1];] (2)信号的乘 数学描述 ( ) ( ) ( ) x n = x1 n x2 n MATLAB 实现 X = X1. X2 设[ x10=[1 0.7 0.4 0.1 0]; x20=[0.1 0.3 0.5 0.7 0.9 1];] (3)计算卷积 y=conv(x,h) 用 MATLAB 计算序列{-2 0 1 –1 3}和序列{1 2 0 -1}的离散卷积。 首先用手工计算,然后用 MATLAB 编程验证。 三、实验组织运行要求 1、学生在进行实验前必须进行充分的预习,熟悉实验内容; 2、学生根据实验要求,读懂并理解相应的程序; 3、学生严格遵守实验室的各项规章制度,注意人身和设备安全,配合和服从实 验室人员管理; 4、教师在学生实验过程中予以必要的辅导,独立完成实验; 5、采用集中授课形式。 四、实验条件 1、具有 WINDOWS 98/2000/NT/XP 操作系统的计算机一台; 2.、MATLAB 编程软件。 五、实验报告要求 1、简述实验目的和实验原理,先人工计算求出你选定的序列 x(n)、h(n)的卷积 结果并与计算机计算结果相比较,给出笔算和计算机计算的差分方程结果对照 表。 2、编写以上运算的 MATLAB 程序
实验二:离散时间系统分析 实验学时:2学时 实验类型:验证 实验要求:必修 一、实验目的 1、学习MATLAB语言的编程和调试技巧: 2、掌握笔算离散卷积方法和MATLAB语言实现。 二、实验内容 时域中,离散时间系统对输入信号或延迟信号进行运算处理,生成具有所需 特性的输出信号。本实验通过MATLAB仿真一些简单的离散时间信号和系统, 并研究其时域特性。涉及到离散时间信号、离散时间系统、系统性质及线性卷积 等知识点。 1、单位抽样序列dn-m,)的生成函数impseq.m function [x.n]=impseq(n0.ns,nf) n=[ns:nf]:x=[(n-n0)==0]; %序列的起点为ns,终点为nf, %在n=n0点处生成一个单位脉冲 例题:x,n]=impseq(4,0,20) stem(n.x) 2、单位阶跃序列u(n-n)的生成函数stepseq.m function [x.n]=stepseq(n0.ns.nf) n=[ns:nf];x=[(n-n0)>=0]; %序列的起点为ns,终点为nf,在n=n0点处生成单位阶跃 例题 [x,n]-stepseq(4.0,20)%u(n-4) stem(n.x) 3、两个信号相加的生成函数sigadd.m function [y.n]=sigadd(x1,nl,x2.n2)
5 实验二:离散时间系统分析 实验学时:2 学时 实验类型:验证 实验要求:必修 一、实验目的 1、学习 MATLAB 语言的编程和调试技巧; 2、掌握笔算离散卷积方法和 MATLAB 语言实现。 二、 实验内容 时域中,离散时间系统对输入信号或延迟信号进行运算处理,生成具有所需 特性的输出信号。本实验通过 MATLAB 仿真一些简单的离散时间信号和系统, 并研究其时域特性。涉及到离散时间信号、离散时间系统、系统性质及线性卷积 等知识点。 1、单位抽样序列 0 ( ) n n − 的生成函数 impseq.m function [x,n]=impseq(n0,ns,nf) n=[ns:nf];x=[(n-n0)= =0]; %序列的起点为 ns,终点为 nf; %在 n=n0 点处生成一个单位脉冲 例题:[x,n]=impseq(4,0,20) stem(n,x) 2、单位阶跃序列 0 u n n ( ) − 的生成函数 stepseq.m function [x,n]=stepseq(n0,ns,nf) n=[ns:nf]; x=[(n-n0)>=0]; %序列的起点为 ns,终点为 nf,在 n=n0 点处生成单位阶跃 例题 [x,n]=stepseq(4,0,20) %u(n-4) stem(n,x) 3、两个信号相加的生成函数 sigadd.m function [y,n]=sigadd(x1,n1,x2,n2)
数字信号处理实验指导书 n=min(min(n1).min(n2)):max(max(n1).max(n2)) yl=zeros(1,length(n)),y2=y1; yl(find((n>=min(n1))&(n=min(n2)&(n=min(n1)&(n=min(n2)&(n<=max(n2))==1))=x2; y=yl.'y2. 例题: x1=1,2,3,41x2=[1,2,3,4,5] nl=0:3,n2-04 n=min(min(n1),min(n2)):max(max(n1),max(n2)) sigmult(x1,n1,x2,n2) stem(n,sigmult(xI,nl,x2.n2)) 5、序列移位m)=x(n-)的生成函数sigshift.m function [y,n]=sigshift(x,m,n0) n=m+n0;y=x %已知x=[1,2,3,4,5,6,5,4,3,2,1] %求x(n)=2xm-53xn-4)的波形
数字信 号 处 理 实 验 指 导 书 6 n=min(min(n1),min(n2)):max(max(n1),max(n2)) y1=zeros(1,length(n)); y2=y1; y1(find((n>=min(n1))&(n=min(n2))&(n=min(n1))&(n=min(n2))&(n<=max(n2))==1))=x2; y=y1.*y2; 例题: x1=[1,2,3,4]; x2=[1,2,3,4,5] n1=0:3; n2=0:4 n=min(min(n1),min(n2)):max(max(n1),max(n2)); sigmult(x1,n1,x2,n2) stem(n,sigmult(x1,n1,x2,n2)) 5、序列移位 0 y n x n n ( ) ( ) = − 的生成函数 sigshift.m function [y,n]=sigshift(x,m,n0) n=m+n0; y=x %已知 x(n)=[1,2,3,4,5,6,5,4,3,2,1] %求 x1(n)=2x(n-5)-3x(n-4)的波形