毕业设计-MATLAB通信原理仿真实验系统设计论文及源码_第1页
毕业设计-MATLAB通信原理仿真实验系统设计论文及源码_第2页
毕业设计-MATLAB通信原理仿真实验系统设计论文及源码_第3页
毕业设计-MATLAB通信原理仿真实验系统设计论文及源码_第4页
毕业设计-MATLAB通信原理仿真实验系统设计论文及源码_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、MATLAB通信原理仿真实验系统设计论文及源码通信论文 MATLAB通信原理仿真实验系统设计论文及源码 本文简单介绍了VB与MATLAB混合编程的技术,从而设计了本科教学中通信原理课程实验的演示系统。Microsoft VB作为开发软件,使用特别方便,尤其在开发界面方面有独到的优点,但是在计算与图形显示方面,显得能力不足。MATLAB系统中有许多科学计算及图形显示方面的函数,用MATLAB中的通信工具箱来进行通信领域的研究,开发和系统设计分析是一种行之有效的方法,在教学中也可起到很好的辅助作用,它不仅能完成设计分析,还能完成通讯系统的许多实际条件无法完成的仿真实验。另外,除了直接应用MATLA

2、B中的工具箱实现仿真分析外,还可以本文来自六维论文网用SIMULINK仿真平台。它为用户提供了完整的通讯系统模块库,用模块库可以搭建自己的系统,完成系统设计分析。这样工程人员就可以编写简单的语句调用这些现成的函数或编写出需要实现的功能函数。充分利用两个软件的优点进行混合编程,可以编制出界面友好、计算及图形处理能力强大的软件。 本文的演示实例表明,在通信原理的学习过程中利用MATLAB和VB的混合编程可以大大降低代码的长度和复杂性,而且易于用户使用。限于篇幅,本文仅以双边带抑制载波调制为例子具体介绍了通过MATLAB仿真的过程,对其他的章节实验都可以做类似分析和仿真,程序都已在附录中给出。 VB

3、和MATLAB的接口技术还可采用其他的方法,如使用Shell函数的方法或者将MATLAB程序转换为动态链接库(DLL文件)的方法等。但利用ActiveX自动化和DDE法简单方便,效率较高,功能强大,再加上学校机房一般都安装了MATLAB,故是一种理想的无缝链接方法。 参考文献论文网http:/www.L 1 何文俊,马杰,等.Visual Basic编程实例精解.北京:北京希望电子出版社,2000 2 王颖.ActiveX:从Visual Basic6.0调用MATLAB的实现方法.机电工程,1999 (5),7274 3 韩利竹, 王华,等.MATLAB电子仿真与应用.北京:国防工业出版社,

4、2003 4 樊昌信,张甫翊,等.通信原理.北京:国防工业出版社,2001 5 周竹生,陈灵君,等.VB实现对Matlab程序的调用.电脑开发与应用,2004 (5),2124 6 朱志松,郭晓丽,等.VB与MATLAB接口编程控讨.电子应用技术,2003 (12) 7 李天启. Visual basic6.0学习捷径.清华大学出版社,1998 8 刘专俭.MATLAB应用程序接口用户指南.科学出版社,2000 9 徐明远,邵玉斌.MATLAB仿真在通信和电子工程中的应用.西安电子科技大学出版社,2005 10 MATLAB,MATLAB Complier Suite Documentatio

5、n Mathworks,2003 11 Duance,Hanselman,Bruce. Littlefield Mastering MATLAB Prentice Hall. International, Inc,1996 12 S Card, S G Eick, N Gersho. Information Visuallization, New York: A CM Siggraph 98 course,ACM,1998(News):95 13 美Vinay K.Ingle, John G.Proakis. Digital Signal Processing Using MATLAB.北京:

6、科学出版社,2003. 致 谢 写到这里,即我的学位论文将要付梓的时候,想要说的感谢很多,因此我想借这一隅之地说上几句。这篇并不太长的论文,不仅使我想到这三个月来的艰辛工作,四年来的寒窗苦读,更是我人生最重要的一段时间的一个句号。在这段时间里,我从一个从未离开父母庇护的懵懂少年成长为一个懂得人间寒暑的高校毕业生,其间的痛苦,悲伤,欢笑,一切的一切在我脑海中还是那么清晰、难忘但我还是要感谢,感谢陪我走过陪我经历这一切的所有的朋友、同学、老师、父母。感谢你们对我的帮助,感谢你们给我的教导,感谢你们给我的温情。当然,还要感谢我的母校西南林学院。 一次次的迷失,一丝丝的曙光,导师徐老师的鼓励和教导指引

7、着我走过了这几个月的时间。可以说没有恩师就没有本篇论文的完成。敬祝恩师身体安康,合家幸福! 其次,我还要感谢系上四年来对我的关心与栽培,特别是授课予我的各位老师,四年来是你们孜孜的教诲,才成就了今天的我. 此外,还要衷心感谢我的同学们的帮助,你们在生活和学习上对我的帮助是这篇论文得以顺利完成的保障。感谢我的父母在万里之外对我的关怀,你们的鼓励也是我完成论文的最大动力。 四年时间转瞬即过,回首往事感慨万千。本科阶段只是我追求的开始,在以后的日子里我会更加勤奋的学习、工作,努力去征服一个个的困难,实现我人生的梦想。 还有很多我无法一一列举姓名的师长和友人给了我指导和帮助,在此衷心的表示感谢,他们的

8、名字我一直铭记在心!最后,衷心感谢在百忙之中抽出时间审阅本论文的专家教授。1 前言 在当今信息时代,通信技术的发展日新月异,计算机技术的发展突飞猛进,而现代通信系统是一个十分复杂的工程系统,由于技术的复杂性,在进行实际硬件系统试验之前,软件仿真以成为必不可少的一部分。随着电子信息技术的发展,软仿真已经从仿真研究和设计辅助工具,发展成为今天的软件无线电技术,这就使得在现代通技术中,越来越重视采用计算机仿真技术来进行系统分析和设计。作为通信专业的学生和科技人员不但要掌握现代通信技术和理论,更需要了解和掌握基于计算机技术的通信系统仿真技术。 计算机仿真技术的基础,是建立工程问题的数学模型,只有建立了

9、工程问题的数学模型,才能通过计算机进行仿真,达到对系统的分析和检验目的。但由于现代通信系经的复杂性,在许多时候直接建立数学模型是相当复杂的,也不利于工程使用。因此,在通信系统的分析和设计中,人们一直希望有一种既能按物理概念直接建立分析和仿真模型,又能提供直观数学模型分析和仿真的工具。MATLAB就是一种比较适合这两种方法的现代通信系统设计、分析和仿真的实验工具。 随着通信系统的复杂性不断增加,传统的设计方法已经不能适应发展的需要,因而通信系统的模拟仿真技术越来越受到工程技术人员的重视。传统的通信系统设计方法主要是手工分析与电路板试验,这些方法的最大缺点是比较繁杂,而且需要花费很多时间。通信系统

10、模拟环境可以称之为软件试验板,它可以使用户在很短的时间内建立整个通信系统模型,并对它进行模拟仿真,计算机通信系统模拟仿真环境是介于手工分析与电路板试验之间的一种通信系统设计方法。 本文充分利用了Matlab和VB将通信原理课本上的一些相关原理进行了图像仿真,在此基础上集成了一个仿真的可视化开发软件。 The design and realization of Correspondence princeple simulation experimental system Abstract: Correspondence principle curriculum is one of the mos

11、t important basic courses for the undergraduate of electrical or communication major, but the principle and concept in this curriculum is so abstract and difficult that students hard to 论文网http:/www.L of component crackly and hard to update. For resolving above problems, exploiting a kind of virtual

12、 experimental platform is one of the effective ways12. This paper combined friendly exploiting interface of VB software with powerful calculating function of MATLAB software, designed and exploited man- robot interaction software simulation system which have the characteristic of friendly interface,

13、 easy to operate. Especially introduce ActiveX technology that program by VB and MATLAB software. Further more introduced the design process of the simulation system. Key words: Correspondence Simulation, VB, MATLAB, ActiveX 目 录 1 前言 1 2 国内外研究现状 1 3 VB和MATLAB的特点和在软件开发中的优势 2 4 关键技术问题的提出和解决 4 4.1 如何在V

14、B中调用MATLAB程序 4 4.2 什么是ActiveX技术 4 4.3 ActiveX部件的创建 5 4.4 ActiveX部件的使用 5 5 仿真系统的VB界面设计及代码编写 7 5.1 编程机理 7 5.2 系统界面设计 7 5.3 代码的编写 8 6 实现仿真功能的MATLAB代码段的编写 13 6.1 通信系统模型与仿真模型 13 6.2 仿真原理 15 6.3 仿真实现过程 15 6.4 仿真结果 17 7 系统的初步完成、调试改进和不足 18 8 总结 20 参考文献 21 指导教师简介 22 致 谢 23 附 录 24 摘 要:通信原理课程是本科电子类,通信类专业的重要基础课

15、程之一,但是通信原理课程中的原理、概念抽象,理论性强,学生单本文来自六维论文网凭老师上课的讲解难以掌握,这就要求配备一定的实验操作。然而传统的以实验箱作为实验平台的实验教学需耗费大量的实验经费,且具有元件易损,系统升级难和实验效果不理想等缺点。开发一种虚拟的仿真实验平台是解决上述问题的有效途径之一。 本文利用VB的友好开发界面和MATLAB强大的运算仿真功能,将二者相结合,设计和开发出了界面友好、操作简单的人机交互软件仿真系统。并且重点介绍了利用VB和MATLAB进行混合编程的ActiveX技术和该仿真系统的设计与实现过程。关键词:通信原理,仿真,VB,MATLAB,ActiveX 2 国内外

16、研究现状 MATLAB于70年代在美国被开发调用,在以后的数年里,MATLAB在多所大学里被作为教学软件使用。在国外,尤其是在美国,各著名大学在80年代末就已把MATLAB列为电气工程类专业的必修课,它是理论分析和实验研究中必须掌握的技术工具MATLAB 之所以如此广为流传使用,因为MATLAB已逐渐发展成为适合多学科,多种工作平台的功能强大的大型软件。在欧美等高校,MATLAB已经成为线性代数,自动控制理论,数理统计,数字信号处理,时间序列分析,动态系统仿真等高级课程的基本教学工具;在设计研究单位和工业部门,MATLAB被广泛用于科学研究和解决各种具体问题。 在我国,MATLAB也已被广泛应

17、用于各种工程领域和教学领域书市上已有越来越多关于MATLAB与各门学科相结合的参考书,如MATLAB与数学相结合,MATLAB应用于化学实验数据处理,MATLAB电子仿真与应用等等各个学科都在充分运用这个强大的软件实现各领域问题的仿真实验。由于MATLAB提供了FORTRAN与C语言的接口,很多学者通过研究实现了MATLAB与各种软硬件的通信。尤其是与VB,VC,DSP,EDA等软硬件的使用,光是与的结合就有以下6种方式:6  Matlab引擎采用C/S方式,通过Windows的ActiveX通道和Matlab相结合。  Mideva是Mathtools公司推出

18、的一种Matlab集成编译开发平台,提供对.m文件的解释执行和开发环境支持。经过简单设置,可以把.m文件转换成C/C+代码,添加到MSVC,C+ Builder等的工程中。  利用Mideva直接生成EXE文件,在VB中通过Shell调用。  借用C+编译器把.m文件转换成DLL,CB可以直接调用。  在Matlab6.0以后,可通过Add-in实现混合编程。  MatrixVB是一个包含Matlab函数功能的COM库,可以在VB中直接调用。 但是各个学者只是研究了它与软件实现通信的各种方式,没有将其运用于具体的实验系统中去而本文

19、的正是基于这些通信方式,将VB与MATLAB有机结合,设计和开发了通信原理课程仿真实验系统。 3 VB和MATLAB的特点和在软件开发中的优势 Microsoft Visual Basic是微软公司推出的一个可视化的面向对象的应用程序开发工具,他具备当代编程语言所必须的“可视化”,“面向对象”,“事件驱动”三个特征。“可视化”使得操作界面的设计变的如同搭积木般的简单,省去了编写大量代码来完成界面的实现;“面向对象”则是把数据和处理数据的代码封装到一个类中,不仅易于程序的阅读和修改,也使得对象可以重复使用;“事件驱动”使得程序员只需对用户可能进行的操作进程序块的编写,至于其他的误操作都可置之不理

20、。 Visual Basic是基于窗体的可视化程序开发环境,简单、易用,而且可以像C/C+一样开发高级的应用程序,它避开了C+编程过分繁琐和抽象的缺点,同时又能实现大多数Windows编程目的,自微软推出以来,成为广大程序开发人员的首选语言。 VB相对其他高级语言有很高的编程效率,尤其是图形界面与数据库应用方面,编程速度比其他编程语言快几倍甚至几论文网http:/www.L MATLAB是由美国的Math Works公司推出的一个为科学和工程计算而专门设计的高级交互式软件。它是一种高性能的用于工程计算的编程软件,它把科学计算、编程和结果的可视化都集中在一个使用非常方便的环境中。与其他软件相比,

21、MATLAB的强项在于矩阵计算和图形处理。其程序组要由主程序和各种工具包组成,其中主程序包含数百个内部核心函数,工具包则包含复杂系统仿真、信号处理工具包、系统识别工具包等,本文主要通过的在MATLAB软件平台下,通过运行.m文件实现对相关通信原理的仿真。 MATLAB具备强大的数值计算能力,许多复杂的计算问题只需短短几行代码就可以在MATLAB中实现。MATLAB提供的许多函数如果用C语言来实现,均需几十甚至几百条语句以上,而且MATLAB语句简单,易学易用。因此,用MATLAB进行数值分析、图象处理等工作,可以大大节省编写底层算法的时间,避免重复劳动,提供工作效率。 基于VB开发界面友好简单

22、和MATLAB强大的系统仿真功能,故决定采用利用VB编写用户操作界和MATLAB实现后台运算即图形处理的两者混合编程的方法来完成对软件仿真系统的开发。 4 关键技术问题的提出和解决 4.1 如何在VB中调用MATLA本文来自六维论文网B程序 虽然初步的设想简单,但MATLAB下只有供FORTRAN和c语言使用的编程接口,在VB中无法对其直接进行调用,因此,如何在VB中调用MATLAB程序就是我们所面对的问题。 为实现混合编程,Matlab5.0以后版本自带C语言编译器,可以把.m文件转换成.dll程序,方便VB调用。根据是否需要MATLAB环境可以将混合编程分成两大类:MATLAB在后台运行和

23、脱离MATLAB单独运行。一般有以下几种方法5: (1) MATLAB引擎采用C/S方式,通过Windows的ActiveX通道和MATLAB相结合。 (2) MIDEVA是MATHTOOLS公司推出的一种MATLAB集成编译开发平台,提供对.m文件的解释执行和开发环境支持。经过简单设置,可以把.m文件转换成C/C+代码,添加到MSVC,C+ Builder等的工程中。 (3) 利用MIDEVA直接生成EXE文件,在VB中通过Shell调用。 (4) 借用C+编译器把.m文件转换成DLL,VB可以直接调用。 (5) 在Matlab6.0以后,可通过Add-in实现混合编程。 (6) Matri

24、x VB是一个包含MATLAB函数功能的COM库,可以在VB中直接调用。 以上方法中,(3),(4),(5),(6)方法可以脱离MATLAB环境运行,可移植性较好。另外几种方法则需要用户在计算机上安装MATLAB后才可使用。 由于本系统要求实现的功能单一,所以为了实现最终界面的统一,完成VB和MATLAB两者间的无逢连接我们决定采用ActiveX技术,即第一种方法。4.2 ActiveX技术 ActiveX是Microsoft公司于1996年正式命名的一项技术,前身是Microsoft的OLE。ActiveX的基础是COM(Component Object Model:部件对象模型)。COM定

25、义并实现了软部件机制,并把软部件统称为对象。ActiveX既不是一种编程语言,也不是一种操作系统,而是一种能使软部件作为对象进行交互作用的二进制标准。 ActiveX部件是将现有的、完善的程序片段组合在一起的强有力的手段。在VB中,可以使用各种类型的ActiveX部件,如ActiveX控件和代码部件等。也可以在VB应用程序内部通过编程来操纵支持ActiveX技术的应用程序所提供的对象,如Microsoft Excel电子表格和Microsoft Word文档等。此外,还可以创建自己的ActiveX部件。 4.3 ActiveX部件的创建 ActiveX部件的创建根据具体情况可分为三类,一:如果

26、需要的部件是不可见的,则应该创建代码部件。代码部件即以前的OLE服务器,是用来封装对象的一种对象库,为代码重用提供了一种简便的方法。代码部件既可是ActiveX EXE,也可以是ActiveX DLL。如果要创建的部件可以和应用程序运行在一个进程中,则应创建Active DLL;如果要创建的部件能服务于多个应用程序并能在远程计算机上运行,则应创建ActiveX EXE。二:如果需要的是可视的部件并在设计时能被拖放到应用程序中去,则应创建ActiveX控件。三:如果需要的是可视的部件并在运行时能接管应用程序的窗口,则应创建ActiveX文档。 本文所利用的论文网http:/www.L 4.4 A

27、ctiveX部件的使用 同其他对象一样,ActiveX部件创建后并不能直接使用,而必须通过一个变量,即将该部件对象引用赋值给变量,然后编写代码来使用对象的方法、属性与事件来完成对部件的使用,使用完后要释放对象。 部件对象引用如何赋值取决于两个因素:部件是否提供类型库。若提供类型库,则使用之前,要在工程中添加对类型库的引用。类型库含有ActiveX部件提供的全部对象的定义以及全部可用方法、属性和事件的定义。换句话说,若没有加载类型库的话,所使用的部件的所有可实现的功能都必须自己定义并编写代码后才可调用。对象是顶层对象、外部可创建对象,还是从属对象。如果是外部对象,则可以在Set语句中用New关键

28、字、CreateObject或GetObject函数从部件外面将对象引用赋予变量。如果对象是从属对象,则需要使用高层对象的方法在Set语句中指定一个对象引用。 如图 4 1,由于MATLAB提供了相关的类型库,故本问所设计的仿真系统在使用VB设计时将库添加后即可使用MATLAB提供的相关方法、属性和事件。图 4 1 5 仿真系统的VB界面设计及代码编写 5.1 编程机理 MATLAB提供了功能本文来自六维论文网强大的与C/C+,Fortran的外部程序接口,而且提供了内嵌在VB的MATLAB矩阵函数库等等。这使得MATLAB与其他高级语言的混合编程成为可能。MATLAB与VB的混合编程有几种方

29、法,本系统中,考虑到只是为了调用MATLAB产生波形仿真图,故采用了ActiveX技术。 ActiveX是定义从Web到OLE(对象连接与嵌入)控件的所有内容的核心术语。Miscrosoft建立了一套使用和集成ActiveX组件的标准,从Visual Basic到Miscrosoft Word,到Java的所有产品都具有使用ActiveX组件的能力。 ActiveX组件有很多类型,在MATLAB中,对两种ActiveX技术提供了支持,其中包括ActiveX自动化,也就是在上文2.3中提到的ActiveX Automation服务器协议,它包含了ActiveX自动化服务器和ActiveX自动化控

30、制器,我们使用MATLAB作为自动化服务器,它是可以由其他应用程序编程驱动的组件。而自动化控制器就是使用和操纵自动化服务器的应用程序,本系统中使用Visual Basic作为自动化控制器,使用它可以生成、使用和删除自动化服务器,就好像它们是语言的一部分。在VB应用程序内创建MATLAB ActiveX对象后,就可以使用这个对象的方法、属性来实现对MATLAB的调用。 5.2 系统界面设计 由于该程序的开发意图在于方便计算机教学,使得教师在课堂上通过简单的点击几个按钮就能看到波形的仿真,节省时间;同时也能让没学过MABLAB编程或是不能熟练运用MATLAB编程的同学能够通过简单的点击几个按钮就能

31、看到波形的仿真,起到与MATLAB接口的作用,因此考虑只添加足够多的命令按扭控件即可,系统的主界面如图 5 1: 其中主界面将通信原理课程中的主要实验分为六个章节,其中每个章节又用子菜单共分为12个实验。 图 5 1 系统主界面 由于篇幅有限,本文中所有代码编写及仿真原理介绍仅以第二节模拟线性调制中的抑制双边带调幅(DSB_SC)为例做介绍。本节实验界面如图 5 2:图 5 2 抑制双边带调幅界面5.3 代码的编写MATLAB通信原理仿真实验系统设计论文及源码 如同其他可视化高级编程语言一样,VB采用的是事件驱动模式和面向对象,因此不存在所谓的主程序和子程序,代码整体可看成由许多小的过程组合在

32、一起的集合,我们只需对用户可能发生的事件编写相应的代码即可,因此,相对于其他高级语言,VB体现了简单易用的优势。 由于该程序对实现的功能要求不高,故编写代码的关键便在于如何通过VB实现对MATLAB的调用,正如前面我们所说的,在这我们用到了ActiveX技术,如图 4 1,由于MATLAB已经为我们提供了丰富的类型库,我们只需论文网http:/www.L 在前面我们已经说过,ActiveX部件必须通过定义变量赋值的方式来调用,所以在调用MATLAB内部命令之前,VB的程序编辑器里需有如下指令: Dim Matlab as Object;Set Matlab=CreateObject(“Matl

33、ab.Application”)作为声明来实现对MATLAB对象的创建,该语句在通用声明栏,不属于任何过程和子过程,类似于c语言中的全局变量。 则成功创建并引用了MATLAB对象。下面将通过MATLAB提供的方法、属性和命令来完成对程序的设计。 Matlab.Application对象提供了5种方法来实现对MATLAB的调用,它们是:Execute,PutFullMatrix,GetFullMatrix,MinimizeCommandWindow和MaximizeCommandWindow。利用这些方法即可在VB程序中实现任何MATLAB的功能。 其Execute方法用于在VB中调用MATLA

34、B命令,也是本设计中用的方法,PutFullMatrix和GetFullMatrix主要实现1,2维数组在VB和MATLAB中的传递,本设计暂时不使用这两种方法,最后两种方法用于控制MATLAB命令行窗口的最大化和最小化,基本属于非必须的方法。下面重点介绍Execute方法如何使用。 Execute(commandstring):其中参数commandstring为字符型参数,表示任何可在MATLAB命令行中输入的命令。举个例子:在MATLAB命令行下,输入surf(peaks)将绘制出一个三维曲面图,而在VB中则可通过下面的语句来实现同样的功能,结果如图 5 3: Dim Matlab as

35、 Object Set Matlab =CreateObject(“Matlab.Application”) Matlab.Execute(“surf(peaks)”) 图 5 3 到此,该系统设计的关键已经突破,剩下的只是如何编写适当的代码来完成设计,以达到设计所需的功能。如果每条命令都通过Execute调用显然是很烦琐的,因此本设计中将每种调试的仿真程序写成.m文件保存在MATLAB的工作目录下,即可通过一条简单的命令实现对整个程序的调用。下面以 按钮控件为例介绍VB代码的编写。 Dim Matlab As Object %创建ActiveX对象 Private Sub Command1_

36、Click() %DSB-SC按钮过程处理 Set Matlab = CreateObject(Matlab.Application) %引用MATLAB对象 Call Matlab.MinimizeCommandWindow %命令行窗口最小化 Matlab.Execute (本文来自六维论文网dsbmod) %调用dsbmod.m文件生成仿真波形 End Sub 由于在使用ActiveX部件时,任何地方都有产生错误的可能,因此错误处理不可缺少,因此在通用声明中添加一个错误处理函数,用于判断是否正常启动MATLAB,具体函数如下: Function StartMath() On Error

37、GoTo ErrorTrap Exit Function ErrorTrap: Select Case Err.Number Case 440 intTries = intTries + 1 If intTries 5 Then Set MathApp = New Matlab.Application Resume Else Err.Raise Number:=vbObjectError + 28765 Description = 不能启动 MATLAB End If Case Else Err.Raise Number:=Err.Number End Select End Function

38、定义了错误处理函数之后,以后只要在需要错误判断的地方插入该函数即可。其他按钮控件的代码编写大体和 一致。至于窗体过程,由于该软件只将课程中的实验例题的结果进行仿真显示,因此不在考虑范围。 最后只剩例题题目的显示和主界面退出按钮两控件代码需要编写。由于在Text文本框中不能显示特殊的数学符号和数学公式的显示,因此考虑使用Image控件。将已在Word里面编辑好的例题题目,以图片的形式存储起来。然后在在Image控件的Picture属性里将这些图片加载进来即可。 至于退出按钮,本设计中创建了一个对话框,如图 5 4,其中 按扭功能为结束此程序。原本只需要在代码栏中添加End语句即可,但由于设计中创

39、建并引用了ActiveX对象,因此在程序退出时还需释放该对象,所以还需要一句释放对象的命令:Set Matlab = Nothing.。而 按扭功能为返回原程序,所以只需将此对话框窗体关闭即可,取消按纽所对应的代码为:Dialog.hide。 到此,整个的设计和代码编写都基本完成。 图 5 4 退出界面 6 实现仿真功能的MATLAB代码段的编写 6.1 通信系统模型与仿真模型 通信是指消息传递的全过程,即信息的传输与交换。通信的目的在于传递信息,完成信息传递所需要的全部设备和传输媒介的总和称为通信系统。如果信道中传输的是模拟信号,所对应的通信系统为模拟通信系统,如果信道中传输的是数字信号,所

40、对应的通信系统为数字通信系统。 最简单的通信系统模型由信源、信道和信宿三个基本部分组成,同时在信道中还存在着干扰,模型4如下图 6 1: 图 6 1 简单通信系统模型 实际的通信系统要比上图中的简单通信系统模型复杂得多,点对点通信系统的一般模型如图 6 2,它反映了通信系统的共论文网http:/www.L 数字通信与模拟通信相比具有明显的优点:首先抗干扰能力强。模拟信号在传输过程中和叠加噪声很难分离,噪声会随着信号被传输,严重影响通信质量。数字通信中的信息包含在以0,1表示的序列脉冲中,只要噪声绝对值不超过某一门限值,接收端就可以判别脉冲的有、无和误差与否,以保证通信的可靠性。其次是远距离传输

41、仍能保证质量。因为数字通信是采用再生中继方式,能够消除噪声,再生的数字信号和原来的数字信号一样,可继续传输下去,这样通信质量便不受距离的影响,可高质量地进行远距离通信。此外,它还具有适应各种通信业务的要求(如电话,电报,图像,数据等),便于实现统一的综合业务数字网,便于采用大规模集成电路,便于实MATLAB通信原理仿真实验系统设计论文及源码 现加密处理,便于本文来自六维论文网原文请找QQ3249114实现通信网的计算机管理等优点。图 6 2 现代数字通信系统的一般模型 综合数字通信的优点,下图给出了一般数字通信系统的模型并介绍了个部分的具体作用: 信源:其作用是把各种可能的消息转换成原始电信号

42、,即非电/电转换。 发送设备:用于将信源产生的消息信号变换成适合在信道中传输信 号,其变换过程包括编码和调制,其基本功能是将信源和信道匹配。 信道:是信号传输的通道,即传输媒介,分为有线信道和无线信道 类。信道为信号提供了通道,同时也对信号产生各种干扰和噪声。  噪声源:指信道中的噪声以及分散在通信系统其他各处的噪声的集中表示,它将影响通信质量。  接收设备:它的功能与发送设备相反,它能从带有干扰的接收信号中正确恢复出相应的原始信号。  信宿:其作用是将复原的原始电信号转换成消息,即电/非电转换。 信道编码器:将信源的输出变换为数字信息序列,信源

43、编码的目的通常是为了降低信源输出中的多余度,减少每个消息、字符所需的平均码元数,从而提供信息传输或存储的有效性。 信道编码器:对信源编码器的输出进行变换,用增加多余度的方法提高对信道干扰的抗击能力。 解调器:将从信道中传送过来的信号波形还原为调制以前的数字序列。 信道译码器:与信源编码器作用相反,它把经过信道译码器核对后的信息序列转换为适合收信者接收的消息形式。 通信的任务是快速、准确的传递信息,从消息的传输方面来说,通信的有效性和可靠性是通信系统最主要的性能标准。有效性是指在给定信道内所传输的信息内容的多少,主要指消息传输的“速度”问题;可靠性是指接收信息的准确程度,主要指消息传输的“质量”

44、问题,这两者是相互矛盾而又是相互联系的。衡量数字通信系统的有效性的主要性能指标是传输速率、频带利用率;可靠性指标主要是差错率。 6.2 仿真原理 MATLAB提供了丰富的函数用于实现通信仿真,故本文以双边带抑制载波调制解调器的仿真为例介绍相应的仿真原理和仿真过程。 幅度调制是正弦型载波的幅度随调制信号作线性变化的过程。双边带抑制载波振幅调制采用正弦波的原始信号m(t)进行处理: (1) 其中y(t)表示调制后的信号, 为载波频率,是初始相位,双边带抑制载波振幅调制解调器为同步解调器,即由乘法器和低通滤波器组成,原理图如图 6 3: 图 6 3 原理图 假设m(t)频谱为M(&#

45、61559;),则经过调制后其频谱S()会线性搬移到c处。 (2) 通过调用MATLAB的函数,按照顺序依次执行,可以实现数据流的仿真分析。 6.3 仿真实现过程 在MATLAB中只需编写相应的代码,即可实现所给题目的仿真实验,得出相应的仿真结果。此处,仍以抑制双边带调幅为例,给出其MATLAB实现程序如下:(脚本文件dsbmod.m) %.抑制双边代调制 clear echo on t0=2; %信号持续时间 ts=0.001; %抽样时间间隔 fc=100; %载波频率 fs=1/ts; df=0.3; %频率分辨力 t=-t0/2:ts:t0/2; %定义

46、时间序列 %以下三句为定义信号序列 x=sin(200*t); m=x./(200*t); m(1001)=1; %避免产生无穷大的值 c=cos(2*pi*fc.*t); %载波 u=m.*c; %抑制载波调制 M,m本文来自六维论文网原文请找QQ3249114,df1=fftseq(m,ts,df); %付里叶变换 M=M/fs; U,u,df1=fftseq(m,ts,df); U=U/fs; %频率压缩 f=0:df1:df1*(length(m)-1)-fs/2; clf subplot(4,2,1) plot(t,m(1:length(t) %作出未调信号的波形 axis(-0.4

47、,0.4,-0.5,1.1) xlabel(时间); title(未调信号) subplot(4,2,3) plot(t,c(1:length(t) %作出载波的波形 axis(-0.1,0.1,-1.5,1.5);xlabel(时间) title(载波); 论文网http:/www.L axis(-0.2,0.2,-1,1.2); xlabel(时间) title(已调信号); %pause; subplot(4,1,3) %作出未调信号的频谱 plot(f,abs(fftshift(M) xlabel(频率); title(未调信号的频谱) %pause; subplot(4,1,4) %

48、作出已调信号的频谱 plot(f,abs(fftshift(U) title(已调信号的频谱); xlabel(频率) 6.4 仿真结果 本例的仿真结果如图 6 4所示:图 6 4 仿真结果7 系统的初步完成、调试改进和不足 系统界面设计及完成之后,整个系统算是初步完成,经过调试各项功能基本都能正确实现,但是考虑由于各章节都按课程提供的例题进行仿真,因此想到是否可以对其中的参数进行改变,而得到其他的结果。但是由于本文所采取的VB和MATLAB的接口方法的限制,对此造成了一定的困难。所以目前本文只完成了对一个例题的实现,即第一节中平均信息量的计算。其界面如图 7 1显示。 图 7 1 平均信息量

49、计算界面 本道例题是通过提供离散信息源的个数及其概率分布,从而计算该信源的平均信息量,因此关键的参数为信息源的定义。 所以本例要解决的主要问题就是如何从外界接收信息源的定义并通过VB传递给MATLAB。添加了一个文本框Text2,Text1用于显示左边的文本说明。通过文本框的TEXT方法将用户信息传递给VB,既然可以将变量传递给VB,那么从VB传递给MATLAB只需用到Execute方法即可。只需添加语句:Matlab.Execute( Text2.Text)来完成用户对信息源的定义。 其中“Text2.Text”为用户文本框中输入的内容,即用户如果在文本框中输入的是“message(0.1,0.9,2)”,单击仿真按扭后即相当于在MATLAB命令行中添加了“message(0.1,0.9,2)”这句,即可以在MATLAB中运行此句,同时显示相应的计算结果于标签Label1中。 命令按扭下的代码如下: Dim matlab As Object Private Sub Command1_Click() Set matlab = CreateObject(Matlab.Application) 引用MATLAB对象 Call matlab.MinimizeCommandWindow

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论