用MATLAB语言编程设计.doc
《用MATLAB语言编程设计.doc》由会员分享,可在线阅读,更多相关《用MATLAB语言编程设计.doc(21页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、用MATLAB语言编程设计 通信仿真教学软件 【摘要】 本文介绍了一个用MATLAB语言编写的通信仿真教学软件。论述了通信的基础理论和通信仿真教学软件的设计思想以及实现的方法,并谈到了计算机辅助教学的必要性。 1.前言通信原理是通信类专业的一门极为重要的基础理论课程,主要研究信息传递的一系列变换的机理和属性,它包括:信号分析、调制解调、同步、检测过滤、纠错编码、信号特性等理论方面的内容,其内容抽象难懂促使我们应用MATLAB程序语言设计制作了这套通信仿真CAI课件。意在利用计算机一类智能设备来实现该课程的机辅教学,帮助学生理解相关的知识难点。 2.通信仿真教学软件的设计思想 在通信原理中,常常
2、借助于各种信号的时域波形图以及频谱图来说明系统的原理,指出相应的电路设计应达到的目标。欲将寄载消息的信号保质保量的传送给接收者,就必须对它们进行加工处理,对相应的部件进行分析和研究,而这种研讨过程中会用到大量的数学计算。由于 “MATLAB”是Matrix Laboratory(矩阵实验室)的缩写,顾名思义,它是以矩阵,数组为基本处理对象,矩阵的维数不需要预先指定,且随时可变,具有丰富的矩阵运算功能。因此,选用MATLAB作为开发环境无疑能够减轻系统分析与设计的编写负担,另外因MATLAB是一个开放性的系统,具有模块化的结构,任何用户自己已定义的函数都可作为MATLAB函数进行调用。仿真功能我
3、们采用了MATLAB语言编程,以Windows 和MATLAB为软件运行环境。将通信原理中的知识点用MATLAB来实现。通过灵活的菜单和界面设计使某些参数可调。同时运用Simulink软件包,使波形在仿真的同时显示系统。更加有利于在课堂上使用。3理论基础31有关通信基础理论方面 通信中的常见技术如调制解调,多址与复用,同步,模拟信号数字化,噪声中的信号检测,差错控制等在通信原理这门课程中都要有所涉及,因此,必须将与这些技术相关的专业基础理论知识融汇与本课件的编程设计工作中,便使我们的CAI软件真正起到辅助教学的作用。32 有关MATLAB的文件编写方面321 数组运算数组加减运算 符号或,既表
4、示矩阵运算又表示数组运算。数组乘除运算 在MATLAB中,符号.*表示数组乘法运算,若a,b具有相同的维数,则a.*b为a和b对应元素的简单乘积,符号.或./表示数组除法的运算,而且这两种都是对应元素相除,这与矩 阵的左除或右除的含义不同。关系运算: MATLAB中提供了6个关系运算符,用于相同维数两个矩阵进行比较。这6个运算符为: 小于 大于 =大于等于等于 不等于322绘图连续形式: x,y均为向量,这时以向量x作为x轴,向量y作为y轴,绘制典型的二维曲线,调用格式为plot(x,y)。323菜单对菜单的调用如下: 菜单项句柄uimenu(窗口句柄,属性1,属性值1,. . .); 子菜单
5、项句柄uimenu(菜单项句柄,属性1,属性值1,. . .);其功能是在窗口句柄所代表的窗口下建立一个菜单项(由菜单项句柄代表),并在该菜单项下建立一个子菜单项(由子菜单项句柄代表)。其中uimenu()函数的属性又很多种,但最基本的必须有一下两条:.Label属性:它为菜单提示名称;.Callback属性:它定义了回调函数,当该菜单项被选中之后,MATLAB将自动调用此回调函数作为相应菜单项的响应。设计出来的本软件的主界面菜单如图1所示。 图1 主菜单界面324控制流语句for循环语句它允许一条语句或一组语句被重复执行预先确定的次数。它的格式如下 for variable=StartVal
6、:StepVal:EndVal statements end while循环语句 它可以使一条或一组语句能够在一定条件下反复执行多次。格式如下:while expressionstatements endif语句: 是一种简单的条件转移语句。其格式为:if expression Statementsend暂停语句: pause 功能是暂时停止程序的执行,直到用户按任意键之后,才继续执行程序;回显控制语句: echo on/off控制是否在屏幕上回显MATLAB正在执行的语句,系统所默认的状态是不回显。325 M文件编程1函数定义行函数文件的第一行要求用关键字“function”把该文件定义为函
7、数,并指定函数的名字必须与存盘的文件名相同。同时这一语句也定义了输入与输出参数。2函数体 函数体是函数的主体部分,它完成了函数的主要功能。函数体中有流程控制、定义变量、数值运算、符号运算、交互输入输出等功能,也可以调用其它函数和脚本3函数说明 函数说明是对本函数完成功能的简要说明,通常当某个函数过于复杂时,我们给出函数说明以方便使用。4注释 注释是夹杂在函数体中的语句,它以%开头,出现%的行,%后的语句均为注释性的。33有关SIMULINK方面Simulink是一个用来对动态系统进行建模,仿真,分析的软件包。他支持线性和非线性系统,连续和时间模型,或者是两者的混合,系统还可以是多采样频率的,比
8、如系统的不同部分拥有不同的采样频率。对于建模,Simulink提供了一个图形化的用户界面,可以用鼠标点击和拖拉模块的图标建模。图形界面可以将系统模型和图形同时展示出来。这是以前需要用编程语言明确的用公式表达微分方程的仿真软件包所远远不能相比的。Simulink包括一个复杂的由接收器,信号源,线性和非线性组件以及连接件组成的模块库,当然也可以定制或者创建用户自己的模块。所有模型都是分级的,因此可以采取自上而下或者自下而上的方法来建立模型。可以在最高层面上查看一个系统,然后通过双击系统中的各个模块进入到系统的低一级层面以查看到模型的更多的细节。这一方法提供了一个了解模型是如何组成以及它的的各个部分
9、是如何相互联系的方法。定义完一个模块后,就可通过Simulink的菜单或者在MATLAB的命令窗口输入命令对他仿真。菜单对于交互式工作非常方便,而命令行方式对于处理成批的仿真比较应用。使用Scopes或者其他的显示模块,可以在运行仿真时观察到仿真的结果。另外,可以在仿真时改变参数并且立即就可以看到有什么变化。仿真的结果可以放在MATLAB(workspace)的工作空间中进一步的处理或者可视化。4通信仿真的实现41数字基带信号数字通信中一般以单极性非归零码,单极性归零码型,双极性非归零码,双极性归零码,数字双相码,条件双相码和密勒码几种码来表示二元信息序列。由于数字基带信号是数字信息的电脉冲表
10、示,不同形式的数字基带信号具有不同的频谱结构,合理设计数字基带信号可将数字信息变换为适合于给定信道传输的形式,这种变换又称为数字信息的码型转换。譬如单极性非归零码是用高电平表示二元信息中的1,用低电平表示二元信息中的0,电平在整个码元的时间里保持不变。其MATLAB主要源程序如下:grid=300t=0:1/grid:length(x);for i=1:length(x), 计算码元的值 if(x(i)=1), 如果信息为1 for j=1:grid, 该码元对应的点值取1 y(i-1)*grid+j)=1; end else for j=1:grid, 反之,信息元为0,码元对应点值取0 y
11、(i-1)*grid+j)=0; end;end;endy=y,x(i); 为了画图,将y序列加上最后一位 调用后效果图如图2所示,由该图可见,主要将序列10011000101对应的单极性非归零波形形象的展示了出来。图2 单极性非归零码的波形演示再如双极性归零码,这是一种占空比小于100的双极性数字基带信号。因此它具有三个电平,严格说来是一种伪三元码(电平1,0,1)。双极性归零码实现的其主要程序段如下: grid=300;t=0:1/grid:length(x); 定义对应时间序列for i=1:length(x) 进行编码 if(x(i)=0) 若输入信息为1 for j=1:grid/2
12、 y(grid/2*(2*i-2)+j)=1; 定义前半时间为1 y(grid/2*(2*i-1)+j)=0; 定以后半时间为0 end else for j=1:grid/2 反之,输入信息为0 y(grid/2*(2*i-2)+j)=-1; 定义前半时间为1 y(grid/2*(2*i-1)+j)=0; 定义后半时间为0 end;end;end 又如密勒码,它是数字双相码的变形。它采用码元中央时刻的跳变来表示信息1,即前半时间的电平同前一码元后半时间的电平相同,中央跳变。遇到信息0作如下处理:首先对0的码元在整个码元的时间内都保持同一电平值,其次若此0前一信息是1,则码元的电平同前面信息1
13、的码元后半时间电平相同,若前一信息为0,则与前面码元的电平相反。为此,我们用MATLAB编写了下述程序段来加以演示:grid=100; t=0:1/grid:length(x); 定义时间序列i=1; 由于第一码元的编码不定,我们直接给出if(x(i)=1) 输入为1,则 for j=1:grid/2 y(grid/2*(2*i-2)+j)=0; 前半时间为0 y(grid/2*(2*i-1)+j)=1; 后半时间为1 end else for j=1:grid 反之,输入为0 y(grid*(i-1)+j)=0; 所有时间为0 end end for i=2:length(x) 开始进行密勒
14、编码 if(x(i)=1) 输入信息为1 for j=1:grid/2y(grid/2*(2*i-2)+j)=y(grid/2*(2*i-3)+grid/4);前半时间与前一码元后半时间取值相同y(grid/2*(2*i-1)+j)=1-y(grid/2*(2*i-2)+j);后半时间与前半时间相反 end else if(x(i-1)=1) 反之,若前一信息为1,输入信息0 for j=1:gridy(grid*(i-1)+j)=y(grid/2*(2*i-3)+grid/4);所有时间与前一码元后半时间值相同 end else 否则,前一信息为0 for j=1:gridy(grid*(i
15、-1)+j)=1-y(grid/2*(2*i-3)+grid/4);所有时间与前一码元后半时间值相反 end;end; end;end. . . 调用后的效果图见图3 图3 密勒码 该图清楚的展示了信息序列及其相应的密勒码的相应波形42幅度调制幅度调制(又称线性调制),这是一种让正弦载波的幅度随着调制信号而改变的调制方案 。这一类调制方案包括DSB(抑制载波的双边带幅度调制),AM(常规双边带调幅),SSB调制(单边带幅度调制)以及VSB调制(残留边带幅度调制)。在DSB调制中,调制信号和已调载波振幅间的函数关系非常简单,而在SSB调制或VSB调制中要复杂些。线性调制器的一般模型如图所示。它由
16、模拟乘法器和冲激响应为h(t)的带通滤波器组成。 h(t) m(t) 图4 线性调制器的一般模型调幅信号的解调可有两种,相干解调和非相干解调。图5和图6分别给出了DSB系统及相干解调的性能和AM系统及非相干解调的性能演示。在此,我们用了理想的限带白噪声来代替高斯白噪声通过接收机前置带通滤波器之后的噪声。由此可以看出,运用Simulink进行仿真,不仅能够向学生展示仿真出来的图形,而且,它又同时把相应的原理图也展现在了大家的面前,这样更有利于课堂教学。 图5 DSB系统及相干解调性能演示 4.2.1 DSB调制DSB信号的时域表达式为: u(t)=Acm(t)cos(2fct) (4.2.1)其
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- MATLAB 语言 编程 设计
限制150内