1《数字通信技术》实验指导书徐州师范大学计算机科学与技术学院2009.112前言数字通信技术课程是一门理论性与实践性都很强的专业课。如何加强理论课程的学习,加深学生对本课程中的基本理论知识及基本概念的理解,提高学生理论联系实际的能力,如何培养学生实践动手能力和分析解决通信工程中实际问题的能力是数字通信技术教学的当务之急。而数字通信技术课程就是一种重要的教学手段和途径。本通信原理实验系统将通信原理的基础知识灵活地运用在实验教学环节中,实验安排循序渐进,设计和验证实验相结合。实验力求紧扣教学内容,理论叙述清楚,重点突出,指导书例题丰富,具有较强的代表性,以理论指导实践,以实践验证基本原理,旨在提高学生分析问题、解决问题的能力及动手能力,适应多层次学生学习需要。课后习题可以作为学生选做或思考使用,便于学生进一步巩固理论基本知识,建立完整的通信系统的概念。本实验手册是我校数字通信技术课程实验指导的主要依据。根据实验大纲要求,共包含4个实验。3实验1Matlab入门与随机信号实验(6学时)一、实验目的1.熟悉matlab语言环境,掌握matlab语法与matlab程序运行、调试方法;2.学会使用matlab编写程序分析信号,进一步提高编写复杂程序能力。二、实验要求1借阅或购买matlab通信或信号与系统方面的实验指导书,也可以借阅matlab语法编程书籍;2复习信号与系统中关于信号的傅里叶变换、信号的功率谱密度等概念,掌握计算机实现连续信号积分的方法;3认真填写实验预习报告,填写实验结果。三、实验设备PC微机一台四、实验原理1.MATLAB语言简介Matlab是MathWorks公司推出的一套高性能的数值计算和可视化的科学工程计算软件,它支持解释性语言输入,编程实现简单,具有丰富的数学函数功能支持。Matlab允许与C、Fortran语言的接口,其部件Simulink甚至可以采用图形输入的方式来搭构所研究的系统。Matlab6.0以上版本由于采用了新的图形系统,因此对计算机的要求至少要达到:操作系统为:Windows98/Me/2000/XP(Matlab也有基于其他操作系统的版本,这里只介绍基于Microsoft公司的操作系统);内存16MB以上(注:建议系统内存至少128MB以上);剩余磁盘空间1GB以上。Matlab软件的安装可以选择组件,摧荐安装的组件如表1-1所示。表1-1信号与系统分析摧荐安装组件MatlabMatlab主包MatlabHelpFile[PDF]Adobe文本格式的帮助文件MatlabHelpFile[HTML]超文本格式的帮助文件4Simulink动态建模仿真软件包SignalProcessingToolbox信号处理工具箱ImageProcessingToolbox图像处理工具箱ControlSystemToolbox控制工具箱WaveletToolbox小波工具箱CommunicationToolbox通信工具箱ExtendedSymbolicToolbox扩展数学符号工具箱Matlab软件安装完毕后,点击Matlab图标或命令文件就可以进入Matlab运行环境。Matlab运行环境分成几个部分:桌面和命令窗口。命令历史窗口帮助信息浏览器。工作空间浏览器,文件路径检索等,其中主要部分是命令窗口””,它是Matlb与用户之间交互式命令输入,输出的界面,用户从这个窗口输入的命令,经过Matlab解释后执行,并且将执行结果显示在这个窗口。Matlab采用解释性语言,因此所有的程序,子程序,函数,命令在命令窗口中都被视为Matlab的命令。表1-2是一些最基本的常用Matlab命令。表1-2一些常用Matlab命令edit编写Matlab脚本文件*.m的工具,编写好的文件*.m,存储后可以通过用命令*执行。helpMatlab中的命令或函数的使用帮助,如果不清楚Matlab命令的格式,可以通过敲入help命令名获得Matlab的使用帮助。helpdesk该命令打开Matlab帮助环境窗口。exit退出Matlab,关闭主程序,也可以采用quit命令达到相同的效果,或者通过菜单项File中的Exit退出Matlab。cd改变当前Matlab运行目录,缺省情况下Matlab的当前运行目录是:\Matlab6pl\work。pwd显示当前Matlab运行目录。Matlab作为一种高级语言,不但可以以命令行的方式完成操作,也可以像大多数程序语言一样具有数据结构,控制流,输入/输出和面向对象的编程能力,适用于各种应用程序设计。Matlab语言具有语法相对简单,使用方便,调试容易等优点。关于Matlab程序设计的更详细的内容可以参考相关书籍。一下将简单介绍Matlab的使用以期待使读者能快速入5门。Matlab的程序编写就像堆积木一样,可以通过编写.m文件的方式将Matlab命名或函数组合成一个具体功能的命令或函数,通常将.m文件称为脚本文件。脚本文件可以是Matlab的命令或函数,都可以以命令的形式在Matlab的命令窗口””中运行。【例1-1】先创建一个magicrank.m的脚本文件如下(采用edit命令进行编辑)%investigatetherankofmagicsquaresr=zeros(1,32);%调用Matlab函数,产生1×32的0向量forn=3:32%循环30次r(n)=rank(magic(n));%调用幻方函数magic(n)得到n×n的幻方矩阵,r%显示r的结果(注:没有分号)end%并求其秩bar(r)%调用Matlab函数bar,画出r的示意图然后在Matlab环境中执行magicrank例1-1所示是一个简单的脚本文件,或者也可以称之为一个命令magicrank,它求出了从3到30的幻方矩阵的秩,并且用图的形式显示出来。例1-1中涉及到一些基本的Matlab语法和变量的存储、赋值方法,下面将介绍这部分内容,你将看到它是如此简单,以至于你马上可以动手编写你自己的命令。2Matlab基本语法本节仅介绍在信号分析和通信系统仿真中常用的基本语法,关于其他的语法部分读者可以参考Matlab的联机帮助手册。(1)变量赋值与存储方式在Matlab中,变量分成如下几类:标量:标量的赋值如a=10;矢量:矢量是由多个标量组成的一个n元组,其赋值如下:a=[13579];a=1:2:9;a=[1762]等矩阵:矩阵的赋值如A=[123;456;789],其结果相当于矩阵987654321AMatlab中矩阵的存储是按列存储,即上述A矩阵在内存中的存储形式为147258369(2)程序控制语句判断语句if6if语句判断一个逻辑表达式的值,并执行相应的系列命令,其基本语法如下:if表达式1命令elseif表达式2命令…else命令end例如:a=4;b=6;ifab‘a大于b’elseifab‘a小于b’elseifa==b‘a等于b’elseerror(‘不可能的事情发生了!!’)end分支语句switch和caseswitch(a)case0case1case2…otherwiseend例如:a=5;b=mod(5,3);switch(b)case0‘模3为0’case1‘模3为1’case2‘模3为2’otherwise‘不可能啊!’end7循环语句循环语句可以用for或while实现。例如:forn=3:32r(n)=n;endwhile条件命令或函数end当条件不满足时,循环执行中间的命令或函数,当条件满足时,跳出循环执行下面的命令。例如:n=1;whilen30r(n)=n;n=n+1;end跳出循环语句有时可能需要在循环体中的某个点跳出,这可通过continue和break实现:continue语句执行后,直接从该点跳到循环体的开始;break语句执行后,直接从该点跳出循环体。例如:n=0;n=0;whilen30whilen30n=n+1;n=n+1;ifn==15ifn==15continue;break;endendr(n)=n;r(n)=n;endendnn执行结果分别为30153常用的Matlab函数随机数产生类(见表1-3)表1-3Matlab中的随机数产生类函数函数名注释函数名注释randn产生标准正态随机变量rand产生0~1之间的均匀分布随机变量randperm产生随机的排序hist对矢量自动进行直方图统计数学函数类(见表1-4)8表1-4Matlab中的数学函数Matlab函数名注释Matlab函数名注释acos(x)反余弦函数cos(x)余弦函数acot(x)反余切函数cot(x)余切函数asin(x)反正弦函数sin(x)正弦函数atan(x)反正切函数tan(x)正切函数exp(x)自然指数函数pow2(x)以2为底的指数log(x)自然对数函数sqrt(x)根号函数log2(x)以2为底的对数函数floor(x)向下取整数log10(x)以10为底的对数函数ceil(x)向上取整数mod(x,y)x对y的模round(x)四舍五入函数rem(x,y)x除以y的余数sign(x)符号函数做图类函数(见图1-5)表1-5Matlab中常用的做图类函数函数名注释函数名注释plot打印图形figure()创建一个图的窗口subplot打印子图semilogy打印图形,纵轴为对数loglog打印图形,两轴都为对数stem打印离散点序列stairs打印序列的方波图形xlabel标注横轴ylabel标注纵轴title图的标题legend图的注释hold图是否重叠打印grid图是否有格线显示信号处理类(见表1-6)表1-6Matlab中常用信号处理函数函数名注释函数名注释fft快速傅里叶变换ifft快速傅里叶反变换dft离散傅里叶变换idft离散傅里叶反变换filter滤波器函数hilbert希尔伯特变换conv卷积xcorr相关deconv解卷积其他(见表1-7)表1-7Matlab中常用其他函数函数名注释函数名注释ones全0序列length获得序列长度9zeros全1序列size获得矩阵维数reshape重组序列Bin2dec二进制到十进制转换sum求和mean求平均注:所有函数的调用可以用help函数名在Matlab命令窗口中得到调用说明。更详细的内容可以参见Matlab的联机帮助。3Matlab基本操作(1)矢量运算以下叙述中,“”表示Matlab环境中输入的命令。矢量的赋值可以通过:a=[123464345]a=123464345将每个a中的每个元素加2,并且用矢量b表示:b=a+2b=345686567打印bplot(b)gridon给图加上横坐标、纵坐标的名称。xlabel(‘Sample#’)ylabel(‘Pounds’)Matlab可以用不同的符号图画,可以用不同的符号代表不同的曲线类型,如plot(b,’*’)axis([010010])注意:两个矢量可以进行加法和乘法,要求两个矢量具有相同的维数。c=a+bc=46810141081012d=a-bd=-2-2-2-2-2-2-2-2-2两个矢量的点积运算表示两个矢量对应位置相乘:e=a.*b10e=3815244824152435两个矢量的点除运算表示两个矢量对应位置相除:f=a./bf=0.3330.5000.6000.6670.7500.6670.6000.6670.714(2)矩阵运算创建一个矩阵A,其中分号“;”是矩阵行之间的分隔符。A=[120;25-1;410-1]A=12025-1410-1矩阵的转置如下:B=A’B=12425100-1-1矩阵的乘法如下:C=A*BC=512241230592459117两个矩阵中的相应元素相乘的运算用.*表示,结果如下:C=A.*BC=140425-100-101求矩阵A的逆:X=inv(A)X