版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
通信原理实验指导书班级:____________学号:____________姓名:____________目录第一部分知识准备.........................................................................................................................3一前言...................................................................................................................................3二MATLAB初步........................................................................................................................41.CommandWindow指令窗简介...................................................................................41.1命令的执行与显示............................................................................................41.2MATLAB基本命令..............................................................................................42.矩阵、矢量和标量.....................................................................................................52.1矩阵...................................................................................................................52.2计算矩阵尺寸命令size..................................................................................52.3矢量...................................................................................................................62.4计算矢量长度命令length..............................................................................62.5标量...................................................................................................................62.6数据类型...........................................................................................................63.基本运算.....................................................................................................................63.1矢量与标量的加减乘除...................................................................................63.2矢量与矢量之间的加减...................................................................................73.3矢量与矢量之间的点乘“.*”与点除“./”.................................................73.4幂“^”与点幂“.^”.......................................................................................74.函数.............................................................................................................................74.1三角函数...........................................................................................................84.2指数类函数.......................................................................................................84.3复数类函数.......................................................................................................84.4取整函数...........................................................................................................84.5取余数函数.......................................................................................................84.6矩阵的产生与变换函数...................................................................................84.7数据分析函数...................................................................................................94.8绘图类函数.......................................................................................................95.MATLAB编程............................................................................................................135.1M文件..............................................................................................................135.2自定义函数.....................................................................................................136.其他基本操作...........................................................................................................13第二部分实验指导.....................................................................................................................15实验一数字基带传输系统的MATLAB仿真.......................................................................15一、实验目的.................................................................................................................15二、实验内容.................................................................................................................15三、实验原理.................................................................................................................153.1信号及系统在计算机中的表示.....................................................................153.1.1时域取样及频域取样.........................................................................153.1.2频域分析.............................................................................................163.2与随机信号产生相关的指令.........................................................................173.2.1高斯噪声的产生.................................................................................17第1页3.2.2随机码序列的产生.............................................................................173.2.3产生数字随机信号的一般方法.........................................................173.3信号的仿真.....................................................................................................183.3.1连续时间信号的仿真.........................................................................183.3.2离散时间信号的仿真.........................................................................19四、实验步骤.................................................................................................................20五、实验报告要求.........................................................................................................22附录.................................................................................................................................231.T2F子函数........................................................................................................232.F2T函数............................................................................................................23实验二模拟信号幅度调制仿真实验.................................................................................24一、实验目的.................................................................................................................24二、实验内容.................................................................................................................24三、实验原理.................................................................................................................243.1AM调制............................................................................................................243.2DSB调制..........................................................................................................263.3SSB调制..........................................................................................................27四、实验步骤.................................................................................................................29五、实验报告要求.........................................................................................................31实验三二进制数字信号调制仿真实验.............................................................................32一、实验目的.................................................................................................................32二、实验内容.................................................................................................................32三、实验原理.................................................................................................................323.1二进制数字序列的产生.................................................................................323.2OOK调制..........................................................................................................333.32FSK调制........................................................................................................343.42PSK调制........................................................................................................35四、实验内容.................................................................................................................35五、实验报告要求.........................................................................................................39实验四模拟信号数字传输仿真实验.................................................................................40一、实验目的.................................................................................................................40二、实验内容.................................................................................................................40三、实验原理.................................................................................................................403.1抽样.................................................................................................................403.1.1低通信号的抽样定理.........................................................................403.1.2带通信号的抽样定理.........................................................................423.2量化.................................................................................................................423.2.1均匀量化.............................................................................................433.2.2非均匀量化.........................................................................................433.3编码.................................................................................................................45四、实验步骤.................................................................................................................46五、实验报告要求.........................................................................................................49第2页第一部分知识准备一
前言《通信原理》课程是电子通信类专业的主要技术基础课程之一,是电子通信类专业本科生的必修课程,也是电子信息类专业硕士研究生入学考试必考课程。该课程的主要内容是论述怎样可靠而有效地实现消息的传输,使学生掌握通信的基本概念和常用的传输方式及其原理,并能判断出噪声、信道、传输方式等因素对通信指标的影响。该课程的基本理论和方法大量用于电子通信领域的各个方面,特别是在电话网、数据通信网、综合业务数字网和移动通信网等领域有着极其广泛的应用。实验实践与《通信原理》的教学相配合,对加强学生对通信原理理论的感性认识,提高学生的综合能力具有重要的意义。要想充分地了解某种传输方式的特性,最理想的办法莫过于把它做出来,实际测量其参数。然而实际制作一套通信系统所需的周期长、代价高,有时要改变系统的某些参数就可能意味着整个系统需要重做。故对于研究设计人员来说,通过把所有的设计方案、研究问题等都做成硬件,再对硬件进行测量从而获得系统性能的研究方法应属于不得己而为之。较好的研究方法应该是在硬件制作前就对将要制作的实际传输系统做充分的研究,对其参数进行评估,以判断设计是否合理,如果设计是合理的,就可以放心地去实现系统,不然就需要修改现有设计再做分析。即先进行软件的仿真,在仿真结果达标后,再进行具体的硬件制作。近年来,计算机多媒体教学手段的运用逐步普及,大量优秀的科学计算和系统仿真软件不断涌现,为我们实现实际系统设计、计算机辅助教学和学生上机实验提供了很好的平台。通过对这些软件的分析和对比,我们选择MATLAB语言作为辅助教学工具,借助MATLAB强大的计算能力和图形表现能力,将《通信原理》中的概念、方法和相应的结果,以图形的形式直观地展现给学生,大大地方便学生迅速理解和掌握教学内容。《通信原理实验指导书》采用的实验平台也是MATLAB。为了使学生能够较好的使用MATLAB语言完成相应的实验任务,教程中除了回顾了MATLAB软件使用的基本知识外,更详细地给出了与通信相关的众多的MATLAB函数及其用法,同时给出了大量的范例程序,说明针对某一具体问题进行编程的方法等。学生们在实验前,只要认真阅读、预习实验的相关内容,并在实验中,严格按照《实验教程》规定的实验内容和步骤进行实验,即可完成相应的实验报告。《通信原理实验指导书》中设计的实验项目包括:1、数字基带传输系统的MATLAB仿真;2、模拟信号幅度调制仿真实验;3、二进制数字信号调制仿真实验;4、模拟信号数字传输仿真实验。所有这些实验项目所涉及到的实验内容基本上覆盖了《通信原理》课程的大部分主要内容。期望本部分实验能带给你如下收获:(1)学会MATLAB软件的最基本运用。MATLAB软件是一种很实用的数学软件,它易学易用,MATLAB对于许多的通信仿真类问题的解决是很适用的。(2)了解计算机仿真的基本原理及方法,掌握通过仿真去研究通信问题的方法。(3)加深对通信原理课程相关内容的理解。和其他课程的实验指导书有所不同的是,本实验教程同时兼作《实验报告》之用,目的是希望将学生从实验报告的文字撰写中解脱出来,从而将主要精力和时间用到对问题的分析、算法的确定和程序的编写之中。本实验教程中所给出的全部范例程序,都在MATLAB6.5上运行,且是正确的。由于时间仓促和编者水平有限,本实验教程在编写和编辑的过程中,不可避免地存在错误和不当之处,恳请老师和同学们批评指正。第3页二MATLAB初步1.CommandWindow指令窗简介1.1命令的执行与显示在Windows中,用鼠标双击MATLAB图标即可启动MATLABforWindows。MATLAB的命令提示符为“>>”。MATLAB的命令也称语句或函数。在命令行中,键入命令并按回车,就可以执行命令。执行结果或其他与命令执行相关的信息将随后显示在屏幕上。如下图所示:在命令的末尾加上英文输入法下的分号“;”,表示不显示函数的返回值或语句的运行结果。一行中可以有多条命令,命令与命令之间应用逗号“,”或分号“;”隔开。以逗号结尾的命令显示结果,以分号结尾的命令不显示结果。要注意,在MATLAB中,标识符的大小写是有区别的。例如:>>a=6a=6>>A???Undefinedfunctionorvariable'A'.可见,由于定义的是变量a,并赋值为6,故可显示a=6的结果。而其大写A并没有定义,所以报错说没有定义这个变量。1.2MATLAB基本命令(1)帮助命令helphelp命令是一个非常有用的帮助命令,它用于帮助用户了解MATLAB命令与函数的用法或者其他相关的内容。如果你忘记了一个命令的用法,只要敲入“help命令”,MATLAB就会显示有关这个命令的详细信息。MATLAB命令区分大小写,但有一些命令不分大小写,help就是其中的一个。(2)显示目录命令whatwhat用于列出目录中的M、MAT和MEX文件,其中M文件就是MATLAB程序文件。what第4页命令区分大小写。(3)寻找函数命令whichwhich命令显示函数所在文件的位置,给出文件位置的路径。如果是内部函数则显示此函数是内部的。>>whichmaxD:\MATLAB\toolbox\matlab\datafun\max.m表明函数max是由M文件max.m定义的,以及该文件存放路径的位置。(4)路径显示命令pathPath显示MATLAB的搜寻路径。MATLAB寻找命令或M文件时,先查找当前目录,如果找不到,则按path设定的搜寻路径去找。P=path返回一个字符串P,P的内容是搜寻路径。Path(P)把字符串P所描述的路径作为当前的搜寻路径。path(path,P)把P追加到当前搜寻路径中,P在最后。path(P,path)把P加入当前搜寻路径中,P在最前。(5)显示变量命令who,whosWho和whos命令都用于显示当前变量,但是whos给出的信息更加详细。(6)清除变量命令clear用clear命令可以把不要的变量从内存中清除。如果要清除所有的变量,只需输入clear即可。如果只想清除部分变量,则在clear后加上要清除的变量名。(7)改变目录cd和显示目录命令dircd命令用于改变当前的目录,dir命令用来显示目录里的文件。(8)窗口编辑命令clc:清除屏幕上的内容,但并不清除变量。home:移动光标到左上角。Format:设置输出格式,例如小数点位数等echo:开或关显示命令。more:控制多页显示。2.矩阵、矢量和标量2.1矩阵MATLAB的基本运算对象是矩阵。方括弧“[]”用来定义矩阵。逗号“,”或空格用来分割一行中的不同元素,分号“;”用来分割不同的行。例如:>>a=[123;4,5,6;789]a=147
258
3692.2计算矩阵尺寸命令size函数size(A)返回一个行矢量[n,m],其中n是A的行数,m是A的列数。例如对于刚才定义的矩阵a计算其尺寸:>>size(a)ans=33第5页2.3矢量只有一行或一列的矩阵就是矢量,分别被称为行矢量和列矢量。例如:>>b=[1482]b=1482>>c=[1;4;8;2]
%b是一个行矢量%c是一个列矢量c=1482考虑到通信实验内容的要求,我们主要研究行矢量。2.4计算矢量长度命令lengthLength用于计算矢量的长度,如果x是一个常数,则length(x)返回1;如果x是一个矢量,则length(x)返回矢量的长度;如果x是一个M×N的矩阵,则length(x)返回M、N中较大的一个值。例如计算刚才定义的矢量b的长度的命令为:>>length(b)ans=42.5标量只有一个元素的矢量或矩阵就是标量。例如d=[1]或d=1的意思是把d定义为一个值为1的标量。2.6数据类型(1)实数MATLAB不需要对实数作类型说明,所有的数都按双精度浮点方式保存。对很大及很小的-18(2)字符串MATLAB也支持字符串变量。字符串由一对单引号给定。字符串在MATLAB中被看作是一个矢量,每个字符构成矢量的元素。例如str=’hello’str=[’h’,’e’,’l’,’l’’,’o’]。(3)复数在MATLAB中如果标识符i或j没有被定义过,那个一个复数可以简单地用两个实数a,b组成:d=a+j*b或d=a+i*b表示复数。许多人编程时习惯用i、j作循环变量,如果你的程序涉及复数运算的话,最好避免使用它们。3.基本运算3.1矢量与标量的加减乘除矢量加(+)、减(-)、乘(*)或除以(/)一个标量时,其结果是该矢量的每一个元素加、减、乘、除以同一标量。例如:>>A=[1:5]+1A=23456第6页数可采用科学计数法。如1.3e-18表示1.3×10。数可采用科学计数法。如1.3e-18表示1.3×10。>>c=[321]*3+jc=9.0000+1.0000i6.0000+1.0000i3.0000+1.0000i标量加(+)、减(-)或乘以(*)矢量的结果与矢量加(+)、减(-)或乘以(*)标量的结果相同,即矢量与标量的加、减、乘(+、-、*)运算满足交换律。但请注意:标量除以(/)矢量(a/A)是非法的。3.2矢量与矢量之间的加减两个相同长度的矢量相加或相减是其对应的元素相加或相减。例如:>>a=[1:3]*5-[6:6:20]/3a=3693.3矢量与矢量之间的点乘“.*”与点除“./”若A与B是两个长度相同的矢量,则A.*B是A与B的对应元素相乘,A./B是A与B的对应元素相除。注意比较下面的三条指令:>>c=[1:3].*[2,5,5]c=21015>>c=[1:3]*[2,5,5]???Errorusing==>mtimesInnermatrixdimensionsmustagree.>>c=[1:3]*[2;5;5]c=273.4幂“^”与点幂“.^”对于标量a、b,a^b是以a为底,b为指数的幂运算。例如:>>2^3ans=8对于标量x及矢量A,A.^x是对矢量A的每一个元素求以x为指数的幂运算。>>[-149].^0.5ans=0.0000+1.0000i2.00003.0000而x.^A是一个矢量,它的每一个元素是以x为底,以A的对应元素为指数的幂。>>10.^[-2:2]ans=0.01000.10001.000010.0000100.0000对于两个相同长度的矢量A、B,A.^B的结果是一个与A同长度的矢量,其元素是以A的对应元素为底,以B的对应元素为指数的幂。4.函数MATLAB中函数名称和变量都是以字母开头,所有的函数名称均由小写字母组成。所有的函数或命令都可借助help菜单或在命令行中键入help得到帮助。结合课程实验的需要,这里介绍一些常用函数。第7页4.1三角函数三角函数包括正弦sin、余弦cos、正切tan、反正切atan等。例如:>>X=[0:pi/6:pi];Y=sin(X)Y=00.50000.86601.00000.86600.5000
0.00004.2指数类函数指数类函数包括e的指数exp、自然对数log、常用对数log10和平方根sqrt等。在MATLAB中可对负数求对数或求平方根。例如:>>sqrt(-2)ans=0+1.4142i4.3复数类函数复数类函数包括求模abs、角度angle、共轭conj、实部real和虚部imag等。4.4取整函数取整函数包括零方向取整fix、负无穷方向取整floor、正无穷方向取整ceil、四舍无入取整round、取符号sign等。>>x=[-1:0.5:1]*pi;[x;fix(x);floor(x);ceil(x);round(x);sign(x)]ans=-3.1416-1.570801.57083.1416-3.0000-1.000001.00003.0000-4.0000-2.000001.00003.0000-3.0000-1.000002.00004.0000-3.0000-2.000002.00003.0000-1.0000-1.000001.00001.00004.5取余数函数用rem(x,y)可以求得x除以y的余数。4.6矩阵的产生与变换函数(1)全零矩阵zeros及全1矩阵oneszeros(n,m)产生一个尺寸为n×m,元素全为零的矩阵。ones(n,m)产生一个尺寸为n×m,元素全为1的矩阵。若n或m不是整数,则按取整后的结果计算。若n或m中(取整后)有一个为0或负值则返回一个空矩阵。zeros(N)产生一个尺寸为N维全零矩阵。ones(N)产生一个尺寸为N维全1矩阵。zeros(size(A))产生一个尺寸与A相同的全零矩阵。ones(size(A))产生一个尺寸与A相同的全1矩阵。(2)随机数产生命令rand及正态随机数产生命令randnrand(n,m)产生一个尺寸为n×m的矩阵,其元素按均匀分布随机取值于区间[0,1]。randn(n,m)产生一个尺寸为n×m的矩阵,其元素服从标准正态分布。randn(size(A))产生一个尺寸与A相同的正泰分布随机矩阵。rand(size(A))产生一个尺寸与A相同的均匀分布随机矩阵。例如:>>a=sign(randn(1,8000));>>b=(a+1)/2;>>c=b+0.1*randn(size(b));b包含8000个取值1、0等概的随机二进制数。c是b加上方差为0.1的高斯干扰。第8页(3)元素均匀分隔命令linspace函数linspace(a,b,N)产生一个N维矢量,N个元素均匀分隔区间[a,b],第一个元素是a,最后一个元素是b。(4)矩阵元素重排命令reshapereshape(x,m,n)把矩阵x的元素重新排列成m×n的矩阵形式,按逆时针的方向取数。但矩阵x的元素个数必须等于m×n个,否则会出现错误。>>A=[123456],B=reshape(A,3,2)A=123456B=142536>>A=[123456];B=reshape(A,4,1)???Errorusing==>reshapeToRESHAPEthenumberofelementsmustnotchange.4.7数据分析函数数据分析函数包括:最大值max、最小值min、均值mean、标准差std、升序排序sort、求和sum等。4.8绘图类函数MATLAB提供了丰富的绘图功能。结合课程实验的需要,在此简要介绍二维曲线的绘制方法。如想进一步了解MATLAB绘图方面的功能,请执行helpgraphics、helpplotxy、helpxyz、helpcolor或者执行MATLAB的演示程序demo。(1)二维绘图函数plot若X、Y是两个相同长度的矢量,函数plot(X,Y)将激活一个图形窗口,并画出一个以X为横坐标,以Y为纵坐标的曲线。使用plot(X,Y)函数时,若省略参量X,MATLAB将把Y中元素的顺序号作为横坐标的坐标值,也就是说此时横坐标参量是X=[1:length(Y)]。使用plot(X,Y)函数时,也可加入另一个参量S:plot(X,Y,S),S用来规定绘图时使用的颜色及绘制方法。MATLAB规定S是长为1到3个字符的字符串。构成S的字符有两部分,第一部分是颜色,用一个字符表示;第二部分是绘制方法,用一到两个字符表示。它们的定义如下表所示。例如:第9页符号符号颜色符号线型y黄色.点m紫色o圆圈c青色x×标记r红色+加号g绿色*星号b蓝色-实线w白色:点线k黑色-.点划线--虚线>>x=linspace(0,2*pi,30);>>y=sin(x);>>z=cos(x);>>plot(x,y,'m:',x,z,'r-',x,y,'bo',x,z,'k+')其生成的图形为:0.20-0.2-0.4-0.6-0.8-1
0
1
2
3
4
5
6
7MATLABforWindows所绘的图可通过剪贴板直接复制到MicrosoftWord或其他应用程序中。(2)命令hold与clf在缺省状态下,执行plot时MATLAB先清除图形窗口再行绘图。执行holdon后再执行plot时,MATLAB将不清除图形窗口,这样就可以在同一图形窗口内画多条曲线。例如:>>t=[0:0.01:4*pi];>>holdon;>>plot(t,sin(t+pi/3),'r-')>>plot(t,cos(t-pi/3),'k:')>>plot(t,sin(2*t),'b--')0.20-0.2-0.4-0.6-0.8-1
0
2
4
6
8
10
12第10页这一段程序在同一图形窗口绘出了3条曲线,第1条实线是sin(t+π/3),第2条虚线是cos(t-π/3),第3条波折线是sin2t。执行holdoff将使图形窗口变回原来的状态。单独执行hold而不带参数on或off,将图形窗口的hold状态反转。命令clf则是清除当前的图形窗口,但它不改变hold的状态。(3)命令grid与命令axis命令gridon给图形窗口打上格线,而gridoff则是取消图形窗口中的格线。单独执行grid将反转格线的状态(有或无)。命令axis(a)设定X轴与Y轴的坐标范围。通常a是一个包含4个元素的行矢量,例如:a=[Xmin,Xmax,Ymin,Ymax],其元素分别代表X轴与Y轴的最大值与最小值。例如,运行下列程序:>>t=[0:0.01:4*pi];>>holdon;>>plot(t,sin(t),'r-')>>plot(t,sin(2*t),'b:')>>gridon>>axis([0,4,-1.1,+1.1])可得:0.20-0.2-0.4-0.6-0.8-10
0.5
1
1.5
2
2.5
3
3.5
4(4)标签xlable(str)给X轴加上一个以字符串str为内容的标签,ylable(str)给Y轴加上一个以字符串str为内容的标签,title(str)则是给整个图加上一个标题。例如:>>t=[0:0.01:4*pi];>>plot(t,sin(2*t),'b--')>>axis([0,4,-1.1,+1.1])>>xlabel('时间t');>>ylabel('幅值y');>>title('函数sin2t的波形');可得如下波形:第11页函数sin2t的波形0.20-0.2-0.4-0.6-0.8-10
0.5
1
1.5
2
2.5
3
3.5
4时间t(5)figure与close如果要在同一个程序中开出多个图形窗口,可以使用figure命令。单独执行figure后,MATLAB将创建一个新的图形窗口,并以此作为当前图形窗口。执行figure(N)将使第N个图形窗口成为当前图形窗口。如果第N个图形窗口不存在,则figure(N)将创建一个新窗口。新窗口的编号不一定是N,而是按实际已有的窗口序号顺序排列。命令close关闭当前图形窗口;close(N)关闭第N个图形窗口;closeall关闭所有图形窗口。(6)创建子图命令subplotSubplot(m,n,p)命令将当前图形窗口分割成m*n个绘图区域,并选择第p个区域为激活区域。如图所示,子图沿头一行从左至右编号,接着编第2行,依次类推。例如:>>closeall>>x=linspace(0,2*pi,30);>>y=sin(x);z=cos(x);>>a=2*sin(x).*cos(x);>>b=sin(x)./(cos(x)+eps);>>subplot(2,2,1)%选取4个子图中的左上子图>>plot(x,y),axis([02*pi-11]),title('1.sin(x)')>>subplot(2,2,2)%选取4个子图中的右上子图>>plot(x,z),axis([02*pi-11]),title('2.cos(x)')>>subplot(2,2,3)%选取4个子图中的左下子图>>plot(x,a),axis([02*pi-11]),title('3.2sin(x)cos(x)')>>subplot(2,2,4)%选取4个子图中的右下子图>>plot(x,b),axis([02*pi-2020]),title('4.2sin(x)/cos(x)')>>gtext('子图1')>>gtext('子图2');第12页幅值y幅值y>>gtext('子图3');>>gtext('子图4');可得到如下图形:10.50-0.5
1.sin(x)
子图1
10.50-0.5
2.cos(x)子图2-1
0
2
4
6
-1
0
2
4
610.50-0.5
3.2sin(x)cos(x)子图3
20100-10
4.2sin(x)/cos(x)子图4-1
0
2
4
6
-20
0
2
4
65.MATLAB编程5.1M文件用文本编辑器如motepad.exe把MATLAB的命令及语句编辑成一个文本文件,并把文件的扩展名定为.m,这样的文件叫M文件。在MATLAB命令行中键入M文件的文件名(不包括小数点及扩展名“.m”),即可一次性地执行该文件中的所有命令或语句。M文件可以包括所有合法的MATLAB命令或语句,也可以包括其他已经编好的其他M文件名。5.2自定义函数MATLAB中可以编制自己的函数。一个函数对应一个M文件,函数名就是M文件的文件名,自定义函数的M文件第一行必须是如下格式:function[返回值表]=函数名(输入变量表)在函数内部定义的变量都是本地变量。本地变量同外部变量(调用函数的外部过程所使用的变量)使用不同的内存区,因此即使它们的标识符相同,也不会发生冲突。MATLAB的函数中也可以定义全局变量,格式是:globalabc此句声明a、b、c是全局变量。Global声明必须在引用之前。6.其他基本操作(1)命令pause暂停执行M文件,等待敲任意键。Pause(n)则将正在执行的M文件暂停n秒。第13页(2)命令moreon使MATLAB在向屏幕输出满屏时,等待用户敲任意键以继续显示。more(n)规定每屏显示的行数。(3)使用组合键Ctrl+C可中断正在执行的命令语句或M文件。(4)在命令行使用上下移动键可搜寻以前的命令。敲一个字母后再使用上下移动键可搜寻相同字母起头的命令。第14页第二部分
实验指导实验一
数字基带传输系统的MATLAB仿真一、实验目的1、熟悉和掌握常用的用于通信原理时域仿真分析的MATLAB函数;2、掌握连续时间和离散时间信号的MATLAB产生;3、牢固掌握冲激函数和阶跃函数等函数的概念,掌握卷积表达式及其物理意义,掌握卷积的计算方法、卷积的基本性质;4、掌握利用MATLAB计算卷积的编程方法,并利用所编写的MATLAB程序验证卷积的常用基本性质;5、掌握MATLAB描述通信系统中不同波形的常用方法及有关函数,并学会利用MATLAB求解系统功率谱,绘制相应曲线。基本要求:掌握用MATLAB描述连续时间信号和离散时间信号的方法,能够编写MATLAB程序,实现各种常用信号的MATLAB实现,并且以图形的方式再现各种信号的波形。二、实验内容1、编写MATLAB程序产生离散随机信号2、编写MATLAB程序生成连续时间信号3、编写MATLAB程序实现常见特殊信号三、实验原理从通信的角度来看,通信的过程就是消息的交换和传递的过程。而从数学的角度来看,信息从一地传送到另一地的整个过程或者各个环节不外乎是一些码或信号的交换过程。例如信源压缩编码、纠错编码、AMI编码、扰码等属于码层次上的变换,而基带成形、滤波、调制等则是信号层次上的处理。码的变换是易于用软件来仿真的。要仿真信号的变换,必须解决信号与信号系统在软件中表示的问题。3.1信号及系统在计算机中的表示3.1.1时域取样及频域取样一般来说,任意信号s(t)是定义在时间区间(-∞,+∞)上的连续函数,但所有计算机的CPU都只能按指令周期离散运行,同时计算机也不能处理(-∞,+∞)这样一个时间段。数为:
,
截短为sT(t),再对sT(t)按时间间隔Δt均匀取样,得到取样点Nt
Tt
(3-1)仿真时用这个样值集合来表示信号s(t)。显然Δt反映了仿真系统对信号波形的分辨率,Δt越小,则仿真的精确度越高。据通信原理所学,信号被取样以后,对应的频谱时频率的周期函数,其重复周期是
1t
。如果信号的最高频率为fH,那么必须有fH≤
12t
,才能保证不发生频域混叠失真。设Bs
12t
(3-2)第15页为此将把s(t)按区间⎢−⎡TT⎤⎣22⎥⎦为此将把s(t)按区间⎢−⎡TT⎤⎣22⎥⎦则称Bs为仿真系统的系统带宽。如果在仿真程序中设定的采样间隔是Δt,那么不能用此仿真程序来研究带宽大于Bs的信号或系统。此外,任意信号s(t)的频谱S(f)通常来说也是定义在时间区间(-∞,+∞)上的连续函数,所以仿真频域特性时,也必须把S(f)截短并取样。考虑到系统带宽为Bs,便把频谱的截短区将式(3-2)代入式(3-3)得
Nf
2Bsf
(3-3)NfN
1tf
(3-4)同样,信号在频域被离散后,对应到时域也是一个周期信号,其周期为
1f
。如果时域截短时间为T,那么必须T≤1/df才能保证不发生频域混叠失真。也就是说,如果仿真程序中设定得频域采样间隔是Δf,那么就不能仿真截短时间超过域的取样间隔设计为:
1f
的信号。所以,可以把频将式(3-5)代入式(3-1)得
f
1T
(3-5)NtN
1tf
(3-6)这样一来,时域的总取样点数及频域的总取样点数都相等,为N
1tf
。要提高仿真的精度,就必须降低时域取样间隔Δt及频域取样间隔Δf,也就是要加大总取样点数N。这说明仿真的精度与仿真系统的运算量直接有关。为了处理上的方便,我们今后规定采样点数N为2的整幂。举例来说,例如设计要求的系统带宽为1MHz,频域最好分辨率为10kHz,那么据此可求得Nf
2Bsf
200,则取N=256。对应的其他参数为Bs=1MHz,f
2BsN
1ft
TN
0.5s。3.1.2频域分析限于篇幅,在此不介绍MATLAB中关于傅立叶变换的有关函数。为了方便仿真,我们利用MATLAB提供的函数编写了两个函数t2f和f2t。t2f的功能是做傅立叶变换,f2t的功能是做傅立叶反变换,它们的引用格式分别为X=t2f(x)及x=f2t(X),其中x是时域信号x(t)j截短并采样所得的取样值矢量,X是对x(t)的傅立叶变换X(f)截短并采样所得的取样值矢量。第16页间设计为[-Bs,Bs]然后再按间隔Δf均匀取样,得到取样点数为:7.8kHz间设计为[-Bs,Bs]然后再按间隔Δf均匀取样,得到取样点数为:7.8kHz,T128s,这两个函数分别如附录所示。我们关心的另一个指标是信号的功率谱密度,任意信号s(t)的功率谱的定义是T→∞
S(f)
2
2sT(t)的能量谱,
ST(f)T
2
是sT(t)在截短时间T内的功率谱。对于MATLAB仿真系统,若x是时域取样值矢量,X是对应的傅立叶变换,那么x的功率谱便为矢量P(X.conj(X))/T。3.2与随机信号产生相关的指令3.2.1高斯噪声的产生由于函数randn(1,N)产生N个互不相关的、均值为零、方差为1的高斯随机数,所以可xn0*Bs*randn(1,N)的总功率为n0*Bs,最高频率分量为Bs,并且各样点的值互不相关,故它代表双边功率谱密度为
n02
(W/Hz)的白噪声。3.2.2随机码序列的产生语句round(rand(1,M))产生M个取值1、0等概的随机码。函数round表示四舍五入。函数rand产生均匀分布于区间[0,1]的随机数。语句sign(rand(1,M))产生M个取值±1等概的随机码。函数sign(x)对矢量x的元素取正负号,而高斯数randn取正负数的概率是相等的。3.2.3产生数字随机信号的一般方法一般来说,随机数字信号可以直接或间接表示成PAM信号(请参阅通信原理教材)。PAM信号是指所有形如s(t)
∞i−∞
is故对所有不同的数字信号,都可以用相同的方法来产生。1)
产生随机序列矢量aa=round(rand(1,M));为了方便起见,一般规定a的长度M是2的整幂。2)
产生冲击序列信号imp(t)imp=zeros(1,N);imp(1:L:M)=a/dt;矢量imp代表信号imp(t)。第17页Ps(f)limTT,其中ST(f)Ps(f)limTT,其中ST(f)是s(t)截短后所得信号sT(t)的傅立叶变化,ST(f)是用它来产生高斯白噪声。设仿真系统的取样点数是N,系统带宽为Bs,矢量∑ag(t−iT)的信号。它可以用如下的等效模型来表示:其中,N是imp的矢量长度,M是码元矢量a中的码元数,L是每码元内的采样点数。现规定M、N都是2的整幂,于是L自然也是2的整幂。3)
产生PAM数字信号s(t)s(t)imp(t)⊗g(t)g(t)代表脉冲波形,例如,升余弦滚降要求的波形有:g(t)
sint/Tst/Ts
⋅
cos(at/Ts)1−(2at/Ts)2设g(t)的傅立叶变换为G(f),s(t)的傅立叶变换为S(f),则有:S(f)t2f(imp).*Gs(t)f2t(S(f))
%t2f为傅立叶变换函数%f2t为傅立叶反变换函数设矢量s代表数字信号s(t),矢量g代表脉冲波形g(t),矢量G代表其频谱G(f)。那么s的产生方法是:s=conv(imp,g);其中,函数conv表示卷积。卷积后s的长度是length(imp)+length(g)-1。扣除延迟时间及拖尾时间后,数字信号为:Ii=find(g=max(g));s=s([1:N]+ii(1));也可用频域的方法产生数字信号s(t):s=f2t(t2f(imp).*G);注意,此时imp的点数应与g或G相同。若g的宽度小于imp,则应用零补齐。3.3信号的仿真3.3.1连续时间信号的仿真如前所述,MATLAB有很多内部数学函数可以用来产生这样的数字序列,例如sin()、cos()、exp()等函数可以直接产生一个按照正弦、余弦或指数规律变化的数字序列。例如,运行如下程序%program1_1%Thisprogramisusedtogenerateasinusoidalsignalanddrawitsplotclear,%Clearallvariablescloseall,%Closeallfigurewindowsdt=0.01;%Specifythestepoftimevariablet=-2:dt:2;%Specifytheintervaloftimex=sin(2*pi*t);%Generatethesignalplot(t,x)%Openafigurewindowanddrawtheplotofx(t)title('Sinusoidalsignalx(t)')xlabel('Timet(sec)')在《通信原理》课程中,单位阶跃信号u(t)和单位冲激信号δ(t)是二个非常有用的信号。第18页它们的定义如下:这里分别给出相应的简单的产生单位冲激信号和单位阶跃信号的扩展函数。产生单位冲激信号的扩展函数为:%deltafunctionfunctiony=delta(t)dt=0.01;y=(u(t)-u(t-dt))/dt;产生单位阶跃信号的扩展函数为:%Unitstepfunctionfunctiony=u(t)y=(t>=0);%y=1fort>0,elsey=0请将这二个MATLAB函数分别以delta和u为文件名保存在work文件夹中,以后,就可以像教材中的方法使用单位冲激信号δ(t)和单位阶跃信号u(t)。3.3.2离散时间信号的仿真程序Program1_2用来产生离散时间信号x[n]=sin(0.2πn)。%Program1_2%Thisprogramisusedtogenerateadiscrete-timesinusoidalsignalanddrawitsplotclear,%Clearallvariablescloseall,%Closeallfigurewindowsn=-10:10;%Specifytheintervaloftimex=sin(0.2*pi*n);%Generatethesignalstem(n,x)%Openafigurewindowanddrawtheplotofx[n]title('Sinusoidalsignalx[n]')xlabel('Timeindexn')请仔细阅读该程序,比较程序Program1_1和Program1_2中的不同之处,以便自己编程时能够正确使用这种方法方针连续时间信号和离散时间信号。程序Program1_3用来仿真下面形式的离散时间信号:x[n]={....,0.1,1.1,-1.2,0,1.3,….}↑n=0%Program1_3%Thisprogramisusedtogenerateadiscrete-timesequence%anddrawitsplotclear,%Clearallvariablescloseall,%Closeallfigurewindowsn=-5:5;%Specifytheintervaloftime,thenumberofpointsofnis11.x=[0,0,0,0,0.1,1.1,-1.2,0,1.3,0,0];%Generatethesignalstem(n,x,'.')%Openafigurewindowanddrawtheplotofx[n]第19页gridon,title('Adiscrete-timesequencex[n]')xlabel('Timeindexn')由于在程序的stem(n,x,'.')语句中加有'.'选项,因此绘制的图形中每根棒条线的顶端是一个实心点。如果需要在序列的前后补较多的零的话,可以利用函数zeros(),其语法为zeros(1,N):圆括号中的1和N表示该函数将产生一个一行N列的矩阵,矩阵中的所有元素均为零。利用这个矩阵与序列x[n]进行组合,从而得到一个长度与n相等的向量。例如,当x[n]={0.1,1.1,-1.2,0,1.3}时,为了得到程序Program1_3中的序列,↑n=0可以用这个MATLAB语句x=[zeros(1,4)xzeros(1,2)]来实现。用这种方法编写的程序如下:%Program1_4%Thisprogramisusedtogenerateadiscrete-timesinusoidalsignal%anddrawitsplotclear,%Clearallvariablescloseall,%Closeallfigurewindowsn=-5:5;%Specifytheintervaloftimex=[zeros(1,4),0.1,1.1,-1.2,0,1.3,zeros(1,2)];%Generatethesequencestem(n,x,'filled','r')%Openafigurewindowanddrawtheplotofx[n]gridon,四、实验步骤(1)分析程序program1_1每条指令的作用,运行该程序,将结果保存,贴在下面的空白处。然后修改程序,将dt改为0.2,并执行修改后的程序,保存图形,看看所得图形的效果怎样。dt=0.01时的信号波形
dt=0.2时的信号波形请问:上述的两幅图形有什么区别,哪一副图形看起来更接近于实际信号波形?为什么会有这种区别?答:第20页(2)修改program1_1,,存盘程序名为Q1_2,生成实指数信号x(t)=e-2t。要求在图形中加上网格线,并使用函数axis()控制图形的时间范围在0~2秒之间。然后执行该程序,保存所的图形。修改Program1_1后得到的程序Q1_2如下:
图形结果如下:(3)将前文中所给的单位冲激信号和单位阶跃信号的函数文件在MATLAB文件编辑器中编写好,并分别以文件名delta和u存入work文件夹中以便于使用。抄写函数文件delta如下:
抄写函数文件u如下:(4)修改程序Program1_4,并以Q1_4为文件名存盘,利用axis()函数,将图形窗口的横坐标范围改为-2≤n≤5,纵坐标范围改为-1.5≤x≤1.5。修改Program1_4后得到的程序Q1_4如下:
信号的波形图(5)根据示例程序的编写方法,编写一个MATLAB程序,以Q1_5文件名存盘,给给定信号-0.5t求信号y(t)=x(1.5t+3),并绘制出x(t)和y(t)的图形。编写的程序Q1_5如下:第21页x(t)=eu(t)x(t)=eu(t)x(t)和y(t)的图形分别为:五、实验报告要求1、按要求完整书写你所编写的全部MATLAB程序2、详细记录实验过程中的有关信号波形图(存于自带的U盘中),图形要有明确的标题。全部的MATLAB图形应该用打印机打印,然后贴在本实验报告中的相应位置,实验报告必须手写。3、实事求是地回答相关问题,严禁抄袭。本实验完成时间:年月日第22页附录在进行信号时域和频域特性分析时,经常要求进行函数的傅立叶变换和傅立叶反变换运算,为了编程的方便,可将傅立叶变换和反变换分别自定义为两个子函数,在编程时直接调用可提高编程的灵活性和方便程度。下面将这两个常用的子函数定义如下:1.T2F子函数求函数m(t)傅立叶变换的函数T2F有两个输入参数,两个输出参数。输入参数t表示输入数组的时间变量,st存放输入数组,它的长度由length(t)决定;输出参数f表示输出的傅立叶变换对的频率变量,sf用来存放输出数组。T2F函数的程序如下:function[f,sf]=T2F(t,st)%ThisisafunctionusingtheFFTfunctiontocalculateasignal'sFourier%Transiation%Inputisthetimeandsignalvectors,thelengthoftimemustgreater%than2%Outputis
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国城市咖啡发展报告
- 《天然药物的开发》课件
- 养老保险的三大支柱
- 社区项目方案设计模板
- 两位数乘两位数笔算能力测试口算题带答案
- 家庭教育活动报告
- 《组织行为学》激励课件
- 严重精神病性管理工作培训
- 物联网产业发展现状智慧养老技术概论
- 音乐照护健康评估-老年康体指导 初 级 -1729733444183
- 人教版新教材高一上学期期末考试数学试卷及答案(共五套)
- 河道保洁服务投标方案
- 《网络游戏利与弊》课件
- 4.与食品经营相适应的主要设备设施布局操作流程等文件
- 法律文书校对规定
- 小学食堂结算统计表(午餐、晚餐都吃的学校适用)
- 海水的性质 说课课件 2023-2024学年高中地理人教版(2019)必修第一册
- 医院重点岗位工作人员轮岗制度
- CFM56-5B发动机VBV活门的钢丝软轴操控原理及软轴刚度研究
- Mysql 8.0 OCP 1Z0-908 CN-total认证备考题库(含答案)
- 带式输送机胶带安装
评论
0/150
提交评论