数字信号处理实验 物理电子工程学院 电工电子实验教学示范中心
前言 数字信号处理是一门理论和工程实我密切结合的课程。为了加深对教学内容的理解,应在 学习理论的同时,加强上机实验,深入理解和消化基本理论,般炼初学者独立解决问题的 能力。本课程实验要求学生运用MATLAB编程完成一些数字信号处理的基本功能 MATLAB是高效的工程计算沿言,它将计算、可视化和编程等功能集于一个易于使用的 环境,在MATLAB环境中捐述计编制求解问避的程子时,用户可以按行合人们科 学思维的方式和数学表达习贺的语言形式来书写程序。MATLAB广泛应用于工业,电子, 医疗和述筑等众多领域。其典型应用主妻包括以下几个方面: 数学计算: 算法开发: 数据采集: 系统建模和仿真: 数据分析和可视化 科学和工程绘图: 应用款作开发(包括用户界面)
实验1用MATLAB产生时域离散信号 一、实验目的 L.熟悉MATLAB的主要操作命令 2. 学会简单的矩阵输入和数据读写。 3. 掌握简单的绘图命令。 4.用MATLAB编程并学会创建函数 5.1、了解常用时域离散信号及其特点 6.2、学猩用MATLAB产生时域离散信号的方法 二、实验原理: 1、时域离散信号的概念 在时间轴的离散点上取值的信号,称为离敢时间信号。通常,散时间信号用x(口表 ,其幅度可以在某一范围内连续取值 :由于信号处理设备或装置(如计算机 专用的 号处理芯片等)均以有限位的二进制数米表示信号的幅度,因此,信号的幅度也必须离敢 化。我把时间利幅度均取离散值的信号称为时域离散信号或数字信号。 在MATLAB语言中,时域离散信号可以通过绮写程字直接产生。 2、常用时域离散信号的生成 1)单位抽样序列 单位抽样序列的表示式为 6)-n=0 i0n≠0 1-6)=01=4 l0n≠0 以下三段程子分别用不同的方法来产生单位扯样序列。 例11用MATLAB的关系运算式来产生单位抽样序列 nl=-5n2=5:n0-0 n=nl:n2 x=nn0]1: stem(n.x.filled); axis([nl.n2.0.1.1+max(x)J):
ile(单位肤冲序列 运行结果如图11所示: 单位脉冲序列 7 0.8 0.6 0.2 时间) 图1-1 例12用z心ros函缀和抽样点直按赋值来产生单位抽样序列 nl-5n2-5k0 n=n1:n2: nt=-length(o:(取参数的长度) nk=absk-nl)+1;取绝对值 X=zcros(1,nt{(行、列)】(zeros生成零矩阵) x(nk)=l; 绘图部分的程序及作图结果与例1-1相 例13车成移位的单位脉冲序列 n1=-5n2=5n0-2: n=nl:n2; x=(n-n0)0 stem(n,x,filled) axis([n1.n2.0.1.1*max(x)]): xlabel(时间(ny):ylabel(r幅度xn: ile单位冲序列: 运行结果如图12所示
单位脉冲序列 1 0.8 0.6 0.4 0.2 2 时间) 图12 2)单位阶跃序列 单位阶跃序列表示式为 u(nk)= 1n≥0 0nm01: stem(n.x,'filled); axis([n1.n2.0.1.1*max(x)J): xlabelC时间(n):ylabel(幅度xnj》g tile(单位阶跃序列: box 运行结果如图1-3所示:
单位阶跃序列 1 ●1 0.8 0.6 04 0.2 0 2 时间) 图13 例1-5用zeros和ones函数来产生单位阶跃序列 nl=-2n2-8:k=0: n-nl:n2: nt-length(n) nk=abs(k-n1)+1: x-[zeros(1.nk-1),ones(1.nt-nk+1)]: 绘图部分的程序及作图结只与例1-4相同 例16生成移位的单位阶跃序列。 nl=-10:n2=10:n0-4 n-nl:n2: x=a-n0>=0 stem(n.x.filled); axis([n1.n2.0.1.1*max(x)D): xlabel(时间(n):ylabel度xn方 ie(移位的单位阶跃序列D: box 程序运行结果如图14所示
移位的单位阶跃序列 1 ●●●●●● 0.8 0.6 0.4 0.2 4 时间) 图14 3)实指数序列 实指数字列的表示式为 x(n)=a° 其中a为实致 例1-7编写产生=12和a=2的实指数连续信号和离散序列的程疗 nl=-10,n2-10:a1-0.5:a2-2 nal-nl:0:xl-al./nal: na2-0:n2:x2-a2.ma2 subplot((2,2,1)plot(nal,x1)x(图形窗口) tile实指数信号(a1): subplot(2.2.4):stem(na2,x2.filled): title(实指数子列(a1)方 box 程序运行结果如图15所示:
实指数信号(a1) 1500 1500 100 100g 50o 00 -5 5 实指数序列(a<1) 实指数序列(a<1) 1500 1500 1000 1000 10 图1-5 4)复指数子列 复指数序列的表示式为xm)=eo 当w=0时,x()为实指数序列:当o0时,x)为虚指数学列,即 ei"=cos(on)+jsin(wn) 其实部为余弦序列,虚部为正弦序列。 例1-8编写程学产生6=0.1,ω=0.6的复指致连续信号与离散序列 nl=30;a=0.1:w=0.6: n-0:n1 x=exp((a+j*w)*n) subplot(2.2.1):plot (n.real(x)) title(复指数信号的实部'): subplot(2,2.3);stem(n,real(x),'filled');
title复指数序列的实部'): subplot(2,2.2):plot (n,imag(x)) title(复指数信号的嘘部'): subplot(2.2.4);stem(n,imag(x),'filled) title(复指数序列的虚部'): box 程序运行结果如图1-6所示 复指数信号的实部 复指数信号的虚部 1 0.5 0 0.5 0.5 10 20 10 20 复指数序列的实部 复指数序列的壶部 0.5 0.5 图1-6 5)正(余)弦序列 正(余)弦序列的表示式为x()Usin(om+⊙) 例19已知时域周期性正弦信号的羡本为Hz,振幅值为1V。编写程序在图形窗 口上量示两个周期的信号波形,并对该信号的一个周期进行32点采样获得离散信号。 f-l:Um=l;nt-2; N-32:T-1E
dt-T/N n=0:nt*N-1 t=n*dt x=Um"sin(2*pi*t): subplot(2.1.I).plot(tn.x): axis([0.nt*T.1.1*min(x).1.1*max(x)J); ylabel(x(t)). subplot(2.1.2):stem(t.x): axis([0.nt*T.1.1*min(x).1.]*max(x)J): ylabel(x(n)): box 程序运行结果如图1-7所示 0.5 0.5 0.2 0.40.6 0.8 12 1.4 -0.5 0 0.2 0.40.6 0.8 1.2 1.4 图1-7 6)矩形波序列