基于MATLAB的通信原理实验平台设计论文设计_第1页
基于MATLAB的通信原理实验平台设计论文设计_第2页
基于MATLAB的通信原理实验平台设计论文设计_第3页
基于MATLAB的通信原理实验平台设计论文设计_第4页
基于MATLAB的通信原理实验平台设计论文设计_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

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

文档简介

基于MATLAB的通信原理实验平台设计摘要本文在原有虚拟实验平台的基础上,设计和实现了采用JMatLink集成Java与MATLAB的数字通信原理虚拟实验平台。该虚拟平台主要解决了现有实验教学资源的紧缺问题,降低基于组件的软件开发成本,提供一个供教学使用的虚拟实验室。该实验平台分为服务器和客户端两个部分,服务器端开发了应用程序,通过采用多线程技术很好地解决多用户访问问题,提高了计算处理的性能,组件信息的保存通过XML技术来完成,同时MATLAB作为计算后台提高了系统仿真能力;客户端用JavaApplet程序实现,采用Bean组件技术开发实验设备组件,具有平台独立、软件重用、可扩充等特点,并且实验结果可以动态显示。基于该平台,论文给出了一个PCM实验,详细阐述了平台组件的开发过程和后台的运行机制。通过该实例,验证了平台的可行性和可操作性,具有良好的实用价值。关键词:虚拟试验平台;MATLAB;JMatLink;JavaBean组件AbstractOnthebasisoftheoriginalvirtualexperimentplatform,thispaperdesignsandimplementsthevirtualexperimentplatformbasedonJMatLinkintegratedJavaandMATLAB.Thevirtualplatformmainlysolvestheproblemoftheshortageoftheexistingexperimentalteachingresources,reducesthecostofsoftwaredevelopmentbasedoncomponents,andprovidesavirtuallaboratoryforteachinguse.Theexperimentalplatformisdividedintotwoparts:serverandclientserverapplications,throughtheuseofmultithreadingtechnologyisagoodsolutiontomultiuseraccess,improvetheprocessingperformance,tosavethecomponentinformationbyXMLtechnology,andMATLABascomputingbackgroundtoimprovethesystemsimulationabilityoftheclient;JavaAppletprogram,usingBeandevelopmentofexperimentalequipmentcomponenttechnology,softwarereuseisplatformindependent,andcanbeextended,andtheexperimentalresultscanbedisplayed.Basedonthisplatform,thispaperpresentsaPCMexperiment,anddescribesthedevelopmentprocessoftheplatformcomponentsandtheoperatingmechanismofthebackground.Throughtheexample,thefeasibilityandoperabilityoftheplatformisverified,andithasgoodpracticalvalue.Keywords:virtualtestplatform;MATLAB;JMatLink;JavaBeancomponent目录TOC\o"1-2"\h\u1引言 引言1.1研究背景Internet在全球得到了迅猛的发展,取得了巨大的成功,己成为当今世界上覆盖面最大、规模最大、信息资源最丰富的计算机信息网络。作为信息高速公路的原型,Internet极大地推动了世界科学研究的发展,展示了信息网络对科研发展的巨大推动作用。在现代信息社会里,科研项目日渐复杂、规模日益扩大,许多项目需要跨学科大规模的合作才能得到有效的解决;现代科研活动耗资巨大,实验设备呈大型化趋势,造价昂贵,因此也迫切需要共享实验设备以降低科研成本;信息网络的全球化和通信、计算机技术的新成就,极大地增强了科研人员交互、协作和资源共享的能力,为不同领域的科研人员提供了更有效的手段,能更好地面对信息激增所带来的挑战。Internet的出现为教育和科研提供了前所未有的广阔天地,伴随着新技术的革新,新的教育和科研模式也发生了变革,而远程教育正是这一模式下的典型应用,Internet的出现为远程教育带来无限生机。1.2研究意义虚拟实验室具有开放性、直观性。利用虚拟实验室,通过网络能实现远程异地为学习者实时或跨地域地提供图文、音像并茂且丰富多彩的人机界面,配合先进的传感测试技术,利用计算机的模拟功能、动画效果实现缓慢过程的快速化或快速过程的缓慢化,并把误操作后可能产生的报废或爆炸情况模拟地显示出来,对有毒有害、污染环境和破坏性实验,也可以在虚拟实验室内完成,实现经济效益和社会效益的双赢。虚拟实验室更新快捷,易于扩充维护,操作方便。当今社会一方面是科学技术的飞速发展,新技术、新设备、新工艺不断出现,加快了仪器设备的更新换代;另一方面高等教育经费与日益扩大的招生规模相比相对不足,难以大量购买高、新、尖仪器设备,教学多只能演示,难以满足实验教学科研的需要。而虚拟实验室可随时开放,反复实践,满足学生的求知欲,提高动手能力。虚拟实验室可降低经费成本,提高教学科研效益。虚拟实验室的建立能有效降低耐用品的消耗量,避免设备的重复购置,提高教学科研效益。虚拟实验室操作方便,不受实验条件的影响,没有实验时间的限制,灵活方便可移植,充分实现资源共享。2数字通信实验平台的需求分析和总体设计2.1平台需求分析及功能划分2.1.1平台需求分析从课程的特点来看,《数字通信原理》是一门理论性很强的基础课程,成为很多高校的本科教学的必修课程,该课程的重要性不言而喻。而实验对学生和老师在学与教上起着相辅相成的作用,理论课程的学习脱离不了实验环节的支撑,而实验的实施也是要以课程为基础。因此,在课程的教与学的同时,一定要参与到实验课程当中来,对课程的学习和教育科研来说,能在一定程度上起到推动作用。从实验的环境来看,真实条件下的实验环境受人员、场地、时空和设备等的限制,它们成为了教学实验的瓶颈。在对真实实验的充分把握下,我们需要开发的数字通信原理虚拟实验室应该要能符合现代教学的特色,能够满足多用户的使用要求,并能克服现有的物理设备存在的一些不足。2.1.2平台功能划分在充分考虑实验室的需求的基础上,我们要周全地考虑实验过程中应该实现的功能。但根本的一点就是,如何让实验室拥有更多更好的虚拟实验设备,这个对于一个实验平台来说比较关键,所以在开发过程中,实现的一个原则就是要使设备组件尽量地丰富,功能尽可能的多。基于Internet的数字通信原理虚拟实验平台,在功能上分别从服务器端和客户端来划分。在服务器端,功能方面包括两个部分:一部分是实验设备组件的发布;另一部分用来侦听远程用户的请求,并响应其请求同时调用服务器上的异构软件MATLAB进行计算处理,然后返回计算结果给远程用户。由于服务器方侦听的请求有着多且并发的特点,因此,服务器方在处理这些请求时需要有一个良好的后台调度机制来服务这些请求。在客户端,主要功能包括提供友好可交互的实验界面、在该实验界面中来设计实验流程、调整设备参数值、运行实验流程输出结果以及动态注册实验组件、保存实验流程和在线提示等。实验的动态仿真效果也是开发过程中一个需要考虑的重要功能。2.2平台体系结构用户通过支持Java虚拟机的浏览器向远程服务器提出申请下载Applet页面后,根据对Applet页面中的事件响应,向服务器请求所需要的Javaclass文件;服务器根据用户提交的申请,解析组件注册XML文件,将相应的Javaclass文件返回给用户;用户在得到这些class文件后,调用本地Java虚拟机将用户实验界面初始化,然后在该界面中按照实验要求定制实验流程或者选择已有的实验流程,在运行前系统向远程服务器发送调用异构软件MATLAB功能函数的请求;服务器在侦听到用户请求后,通过JMatLink来实现调用MATLAB,并将MATLAB计算结果通过VLS返回给用户;用户从服务器得到处理结果后,启动本地执行线程,完成整个实验,并得到实验结果。图1数字通信原理虚拟实验平台体系结构2.3平台运行环境客户端运行环境:虚拟实验室使用J2SE语言开发,具有Java语言特有的跨平台性。只要计算机系统具有解释Java字节码的JVM,即可在该计算机上执行Java,所以它可以运行在几乎所有流行的操作系统之上。如微软的Windows系列,如Windows98,WindowsMe,WindowsNT.Windows2000系列、Sun公司的Solaris、苹果公司的Macintosh以及Linux和Unix操作系统等。用户可以通过两种方式进入虚拟实验室,第一种方式是使用支持Java的浏览器。不过Netscape和InternetExplorer的不同版本支持不同版本的Java,所以使用IE和Netscape6.0以下版本的浏览器需要用户自己安装相应版本的Java插件(JavaPlug-in)。目前虚拟实验室使用的JDK的版本是1.4。第二种方式是使用WebStart技术进入虚拟实验室,采用WebStart技术会自动安装相应的JDK运行环境。服务器端运行环境:服务器端主要提供Web服务器,可以安装在一台Windows2000Server或WindowsNT上。在Windows2000Server或WindowsNT上安装服务器,可以选择IIS5.0或其他Web服务器。也可以选择其他平台充当Web服务器,如Linux+Apache等。在该平台上,我们采用Tomcat5.5进行相关的组件、属性文件等发布的服务。3数字通信实验平台的详细设计与实现3.1MATLAB的通信机制3.1.1JMatLink简介1999年,德国的StefanMueller博士成功的在Java与MATLAB之间架了一个桥梁一JMatLink接口,使得Java能方便调用MATLAB计算引擎的函数库。经过多年不断地改进,现今己是二个成熟的软件产品。JMatLink中所有的方法都是native方法,native方法其实是用C语言编写的方法的存根。这些方法是一些不需要改变源码就能被Windows95/98INT/2000和各种UNIX平台所支持的框架。如图3-1所示,JMatLink被定义为一个类,它继承自java.lang.Thread类。3.1.2JMatLink的内部机制为了实现Java与MATLAB的通信,JMatLink主要应用了JNI技术,因为相比较来看JNI方便快捷、稳定可靠,并能实现实时通信。JNI主要解决服务之间如何连接的问题。它由以下几部分组成:基础结构。它提供了在分布式系统中把服务组织成联邦的一组构件;程序设计模型。它支持并鼓励可靠的分布式服务产品;服务。它可成为联邦JNI系统组成的一部分,为联邦的其它成员提供功能。3.2服务器端主要模块的设计与实现3.2.1服务器管理界面对于服务器管理模块而言,应当实现服务的启动、管理人员对日常工作的一些配置、控制和维护以及对MATLAB的打开与关闭等。为了能很好的完成该模块的功能,首先采用Swing技术开发了服务管理界面,该界面为操作人员的图形化窗口,方便其使用。该管理界面主要完成如下功能:(1)在Web服务器发布服务后,用户发送调用请求之前需初始化,打开该操作界面;(2)当后台运行接受到用户请求时,将解析后的数据流的相关信息进行显示,方便管理人员进行查看,其中信息包括客户端正地址、来自哪个组件及连接状况;(3)打开和关闭MATLAB计算引擎;(4)其他一些辅助功能,包括配置、退出服务、日志的显示等。3.2.2线程池的详细设计诸如Web服务器、数据库服务器、文件服务器或邮件服务器之类的许多服务器应用程序都面向处理来自某些远程来源的大量短小的任务。请求以某种方式到达服务器,这种方式可能是通过网络协议(例如HTTP,FTP或POP)、通过JMS队列或者可能通过轮询数据库。不管请求如何到达,服务器应用程序中经常出现的情况是:单个任务处理的时间很短而请求的数目却是巨大的。构建服务器应用程序的一个过于简单的模型应该是:每当一个请求到达就创建一个新线程,然后在新线程中为请求服务。实际上,对于原型开发这种方法工作得很好,但如果试图部署以这种方式运行的服务器应用程序,那么这种方法的严重不足就很明显。每个请求对应一个线程(thread-per-request)方法的不足之一是:为每个请求创建一个新线程的开销很大;为每个请求创建新线程的服务器在创建和销毁线程上花费的时间和消耗的系统资源要比花在处理实际的用户请求的时间和资源更多。除了创建和销毁线程的开销之外,活动的线程也消耗系统资源。在一个JVM里创建太多的线程可能会导致系统由于过度消耗内存而用完内存或“切换过度”。为了防止资源不足,服务器方需要一些办法来限制任何给定时刻处理的请求数目。线程池通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。其好处是,因为在请求到达时线程己经存在,所以无意中也消除了线程创建所带来的延迟。这样,就可以立即为请求服务,使响应更快。而且,通过适当地调整线程池中的线程数目,也就是当请求的数目超过某个阂值时,就强制其它任何新到的请求一直等待,直到获得一个线程来处理为止,从而可以防止资源不足。3.2.3后台调度模块的设计为异构对象提供调用服务。在服务器端,通过JMatLink来创建engine对象,执行该对象的方法可以打开、关闭MATLAB计算引擎的基本调用方法;单一MATLAB计算引擎提供分布式调用服务;任务的调度和数据流的解析。侦听用户请求,从任务队列中调度任务出对进行解析和处理,调用MATLAB的算法处理包对解析后的数据流进行计算;用户调用MATLAB请求的序列图,通过该过程,客户端组件便可以获取计算结果待下级组件处理;返回经过MATLAB处理后的计算结果。服务线程一直服务调度后的单个任务,因此,对应具体的请求,其结果返回时会一一对应。在VLS中,JMatLink在Java与MATLAB之间充当桥梁的作用,JMatLink通过JavaJN}技术来定位和调用非Java方法(本地化方法),将C/C++编写的文件编译成动态链接库JMatLink.dll同时引入MATLAB的库函数,MATLAB中的函数可以方便地得到调用,这样Java就可以与MATLAB进行通信。图2调用MATLAB请求的序列图在平台上主要用到通信工具箱中的信源编码、模拟和数字调制/解调、使用特殊滤波器对数据进行滤波等功能。用这些功能,根据开发过程的规则,为对象提供服务。在实现时,解析来自远程用户请求的组件信息与后台定义好的组件类型进行匹配,匹配成功后,调用engine对象方法,通过对象方法的执行,顺利地把相关待处理数值和组件属性值传入MATLAB计算引擎。3.3客户端主要模块的设计与实现3.3.1用户操作界面在用户界面的实现时,我们采用Swing用户界面组件技术开发了几个模块类,主要有主窗口类(MainWindow)、主菜单类(MainMenu)、工具条类(ToolBar),实验设备载体类(DeviceCarrier)、实验设备连接器类(DeviceConnector)、设计面板类(DesignPane)、属性编辑栏类(PropertyEditor)、用户注册类(RegisterClassPane)及结果面板类(ResultPane)等,它们之间的关系。其中,MainWindow类是实验平台的主框架,它继承JFrame类,布局整个数字通信原理虚拟实验用户界面平台。在Ma.inWindow中我们装载了实验设计窗口、实验结果窗口、工具栏和菜单栏;ToolBar创建5个实例对象,分别用以运行、停止、新建、打开和保存实验流程;DeviceCarrier类创建的对象为实验流程中的设备单元,性和一些属性值的设置它具有设备名、引线、大小、实验设备的URL地址等属、设备移动、绘制、实验设备序列化等方法;类主要完成对实验设备属性的编辑;Resu}.tPane类主要完成设备的启动、执行、停止和结果的显示等。3.3.2动态实验仿真效果数字通信原理实验的特点决定了实验需要有动态逼真的实验结果,在设计和实现的过程中,可以从真实的实验设备中抽象出单个设备应该具备相应的动态特性。为了能在平台上提供这些特性,我们从实验过程中数据的动态产生和显示来阐述实验仿真效果。1.实验数据的动态产生首先,该课程的实验的数字信号有着连续且稳定的特征,在设计信号发生组件时应该要跟这个特征相符;然后,接收信号的组件能够对信号的动态变化有正确的处理;最后,所产生的信号应该要精确,达到实验要求。在信号发生的设备组件中,有能够产生动态正弦、余弦、正切等信号,这些实现方法都被封装在对应的组件方法中,如正弦信号的产生,其对应方法是sinSignal(),为了能达到实验要求的精度,该方法返回类型定义为double型;在方法体中,用for循环来动态产生一个预先固定长度dataNum的数组,在实验组件中dataNum的值为36,将产生的数据存在result的定长数组中。每当组件获得一个线程运行机会后,它的方法就被调用执行一次,每次产生36字节长度的数组,然后传给下一组件,供其它组件处理直到最后的信号显示。2.实验结果的动态显示实验的最后显示都由显示组件来完成,根据不同实验的显示要求需要开发不同的显示组件,他们在处理的方法上基本一致。这些组件中定义了一个buffer数组,用来缓存由其他组件传来的数据,该数组的长度为dataNum的整数倍。实现时在组件方法体内定义setSourceData2(doublesource)方法,将接收的数组缓冲到buffe:数组,同时依次从buffer数组中(从头至尾)取数存入ScopeData数组中,在drawHistogram()方法中逐次调用ScopeData数组中的数据在JlnternalFrame的对象中进行绘制。在组件中,为了最后能动态显示信号的变化过程,在组件设计时还需给组件定义一个重要的属性sleeplnterval,它用来表示信号之间的间隔时间,在绘制时,相邻数据之间的绘制间隔就是用户可以设置的时间差sleepInterval。这样,在显示时可以看到信号的动态推进过程。由于后台线程不断的运行,显示组件不断获得前面组件传过来的数据,不断填充buffer数组使得最后显示的信号可以源源不断。3.3.3设备Bean组件的设计在该虚拟实验室平台的设备组件开发过程中,采用了基于Java的组件对象技术,它将Java技术和组件技术结合在一起,使Java程序的开发变得快速、简单、易于维护,以适应当前不断膨胀的网络程序需要。该平台上每个实验设备按照JavaBeans技术规范来创建,并向外提供调用接口,其实现细节完全是被封装在每个Bean内部,用户可以添加自己编写的新的实验仪器组件。Bean组件中的get方法和set方法分别实现为外部提供该属性读取方法和更改方法,这样能实现对仪器组件属性的设置和读取的操作。通过使用Bean组件技术,用户可以动态地选择实验和创建设备、设置实验和设备的属性参数值,而系统中各种事件响应以及通信方法可用于组件间的数据交互和通信。在该虚拟实验平台的设备组件开发时使用的Bean组件模式。通常,对于具体的设备而言,为了能实现其功能,我们在实现的时候将组件的方法按照构造和访问方法来进行。其中,构造方法与类名相同,它主要是负责组件的一些属性和变量初始化工作,当系统后台线程运行的时候,系统按照用户设置前默认的值进行;而访问方法是由开发人员根据设备本身的属性进行设计和实现的,用以访问和修改其组件的属性值,下面分别表示设置和获取一个组件的属性值。3.3.4实验的运行流程在客户端,用户在登录操作界面定制实验拓扑结构后,根据实验流程将实验设备队列化,所有的组件都按拓扑排序排成一个节点队列,启动实验并运行时,节点队列中的所有元素将由系统分配线程,运行时当遇到需要调用服务器方MATLAB时,提交申请等待接收处理结果,在获得处理结果后,启动所有线程,每个线程负责自己的数据接收和结果输出。每个线程的运行结果保留在与之相依赖的边(设备组件框图的引脚),作为输入数据提供给以该边作为输入的线程使用。对于后台运行的实现,开发的核心类为Resu}tPane类,它主要负责运行用户定制的实验流程,输出实验结果,同时通过调用该对象的功能,用户可以随时终止实验的运行;对实验结果的显示框进行层叠、最小化、恢复等操作。该类中的runExperiment方法用来运行用户在实验面板中定制的实验流程。3.3.5客户端组建添加的设计和实现对于基于Internet的虚拟实验环境,丰富的实验组件是必不可少的。开发人员尽量考虑各方面的需求来扩展平台中的实验设备组件。然而,组件的扩充对于一些具体或者特殊用户而言,其所需求的组件可能不存在组件库中,这样就无法完成实验;另外,一些科研人员在使用平台的时候,想自己开发某一类实验设备组件放到平台上来进行测试,以验证组件的正确和仿真性能。因此,客户端需要有用户自己在本地能添加组件的功能。为了在平台上能让用户自己添加组件进行相关测试和使用,平台中开发一个模块专门供用户来完成此项功能。用户根据Bean组件的技术开发规范及平台的组件模式,可以将与设备功能等效的算法写入Bean组件的方法体中并按照平台设计的添加操作的流程来扩充平台组件,用户提交的这些组件可以和平台已有组件一起使用,通过实验的仿真结果来验证和检测该用户提交的组件。添加Bean组件的协作图如图3-12所示,用户选择要加载的Bean的类路径后,URLC1assLoader类完成代码的加载,Introspector类获取己加载Bean的内部信息,并返回一个BeanInfo的对象,该对象保存了Bean的属性和方法描述,并把这些信息发送给RegisteredClassPane对象,RegisteredC}assPane对象会在用户组件注册列表中加入该新组件,该对象会在组件列表中加入该新组件来完成组件的添加。至此,用户就可以在平台上选择该组件添加到实验流程来进行检测和验证。图3用户添加自定义组件的协作图而该平台的客户端是JavaApplet程序,Applet程序在访问本地资源,读写文件时是受限的,因此要对Applet程序进行数字签名授权访问本地资源的权限。Applet数字签名的实现主要包括如下一些步骤:(1)将客户端需要用到的各种Appletclass文件打成far包,即newlabaar;(2)在网页中嵌入Applet,即在平台上Entry.html文件中内嵌:<APPLETcodebase="."CODE="Entry.class"ARCHIVE="newlabjar"NAME="vLab"WIDTH=200HEIGHT=150ALIGN=middle></APPLET>的代码段;(3)生成证书及签名(使用keytool和jarsigner命令),将产生一个newlab.store的密钥库文件和一个newlab.cert的证书文件,同时对上面已打包的文件进行签名;(4)新建一个策略文件applet.policy,其内容如下:keystore"http:Il6:80801virtual1abIDCPlnewlab.store""JKS";grantsignedBy"newlab"{permissionjava.io.FilePermission"ALLFILES","read";};(5)修改{java.home}Ijrellib/security目录下的java.security的内容,在其中添加上面创建好的applet.policy文件。通过Applet数字签名,用户有了访问本地资源的权限,可以在平台上添加自己的设备Bean组件到平台上来进行验证和测试。4实例-PCM实验4.1PCM的基本原理在通信原理课程的实验中,PCM脉冲编码调制实验对于教和学起着重要作用。PCM通信系统如图3-13所示,PCM原理包括如下三个过程:(1)抽样。将模拟信号转换为时间离散的样本脉冲序列。就是对模拟信号进行带宽2倍以上的频率进行周期性扫描,从而把时间上连续的信号变成时间上离散的信号。该模拟信号经过抽样后还应当包括原信号中所有信息,也就是说能无失真地恢复原模拟信号。它的抽样速率的下限是由抽样定理确定的。(2)量化。将离散时间连续幅度的抽样信号转换成为离散时间离散幅度的数字信号。量化又分为均匀量化和非均匀量化。均匀量化是在抽样信号的取值范围内均匀划分量化等级的量化方法。它产生的量化噪声是均匀的,与信号在取样点的幅度无关。因此均匀量化会出现话音弱时的信噪比低、干扰大,而话音强时的信噪比高、干扰小的反常情况。即会造成大信号时信噪比有余而小信号时信噪比不足的缺点。(3)编码。用一定位数的脉冲码组表示量化采样值。图4PCM通信系统方框图非均匀量化是根据信号的不同区间来确定量化间隔的量化方法。非均匀量化的具体办法是压缩、扩张法,即在发送端对抽样信号先进行压缩处理再均匀量化,他是为了解决均匀量化时小信号固定均匀选取量化间隔的非线性量化方法,即量化特性在小信号时分层密、量化间隔小,而在大信号时分层疏,量化间隔大。根据CCITT的建议非均匀量化的实现方法通常有两种:一种是北美和日本的15段折线近似的u律(u=2SS)压扩;另一种是欧洲和我国所采用以13段折线近似的A律(A=87.56)压扩。4.2PCM的详细实现取A律PCM编码为例来介绍其实现过程。在客户端,非均匀A律PCM编码器组件中写入pcmcodeA方法,具体实现如下,该方法主要完成远程调用MATLAB的一个请求,并将处理完的结果值进行解析。publicdouble[]pcmcodeA(double[]value)throwsIOException{clientLowFilter=newSocket{EntryipAddress,JMPS.PORT);try{output}newObjectOutputStream(clientLowFilter.getOutputStream());for(inti=0;i<dataNum;i++)毛对输入信号进行归一化处理Doubleobj=newDouble(value[i]/amplitude);outputStr+=obj.toString{);outputStr+=”,”;}outputStr+=":"+rank+"}"+A;output.writeObject("PcmEncodeA"+”.”+outputStr);input=newObjectInputStream{clientLowFilter.getlnputStreamQ);inputStr={String)input.readObjectQ;StringTokenizerst=newStringTokenizer(inputStr.","};for(inti=0;i<st.countTokensQ}}st.hasMoreTokens(};i++){displayData[i]==Double.parseDouble{st.nextTokenQ};}}catch(Exceptione){…)returnthis.displayData;}在服务器端,为完成调用功能需创建相应的Java类,在类的方法体中完成调用请求中数值和参数与MATLAB引擎对象engine的传递,并从引擎对象中获取计算结果值。其具体实现如下:publicStringpcmEncode(JMatLinkenginedouble口value}double口Pte){N=(int)para[0];A=(double)para[1];rank="N="+N;Alv="A="+A;engine.engEvalString(rank);engine.engEvalString(Alv};command="value=[";for{inti=0;i<=value.Iength-2;i++){command+=value[i];command+_”,”;}command+=value[value.length-I]+"]";engine.engEvalString{command};engine.engEvalString("y=Apcm(value}A)");engine.engEvalString("z=pcmcode(y)");matrix=engine.engGetArcay("z");fo代inti=-0;i<dataNum;i++)}for(rotj=O;j<matrix[i].length;j++){Doubleobj=newDouble(matrix[i][j]);message+=obj.toStringQ;message+=”,”;if(i=dataNum&&j=matrix[i].length)break;}}message+=matrix[dataNum-1][matrix[dataNum-1].length-1』;returnmess铭e;}}以上是非均匀A律PCM编码实验的实现过程,平台的其他组件实现类似。4.3实验过程与结果分析在实验开始之前,服务器端的管理人员需要先登录服务器管理界面,启动MATLAB,初始化完毕后,等待请求处理。然后,客户端用户可以根据实验的要求进行实验,具体实验过程如下:登录。用户通过浏览器申请下载嵌有Applet的页面,Applet页面是嵌入在JSP页面中,如图3-14所示。根据对页面的事件响应,获得该实验平台所需的class文件,运行得到用户界面窗口;定制实验流程。其实验定制如图}-15所示,对于均匀量化来讲,PCM编码实验需要用到的组件包括:“数字信号发生器”、“叠加器”、“均匀PCM量化器”和“信号示波器”,而PCM编码非均匀量化过程中又分A律和林律,根据用户实验需求来进行选择。在该实例中,我们选择“A律非均匀量化器”来进行PCM实验;实验设备组件参数的设置。在实验面板区中添加这些实验设备组件后,用户可以根据实际要求在右边的属性列表框中来修改设备组件的属性值;点击运行按钮,系统后台自动检测运行队列中的设备组件,将组件按定制方式进行排列,形成一个运行队列,系统后台启动线程服务于这些组件;数字信号发生器”依据设置的参数产生36字节的数据,发送至“叠加器”中,“叠加器”将叠加后的结果分别发送到“均匀量化器”、"A律非均匀量化器”和其中一个“信号示波器组件(No.1)"。信号示波器组件(No.l)将在结果面板显示叠加后的信号,此时,另外两个组件在处理的时候需要调用MATLAB中的库函数,因此会向服务器端发送调用请求,经过服务器处理后得到结果值,并将结果值返回到“数字信号示波器组件(No.2)”和“数字示波器组件”,三个示波组件将在结果面板中显示叠加信号、均匀量化和非均匀量化的信号;重复执行第(5)步,直到用户点击停止按钮。通过以上步骤地执行,我们在ResultPane面板中将会看到3个输出框图,如图3-16所示,信号是源源不断产生,而且动态显示。左边框图是经过A律非均匀量化和编码的信号图,中间框图是原始信号图,右边框图则是经过均匀采样量化的结果。在该实验中,我们可以从实验结果图上获取信号量化后的信号结果图,对用户而言,对其理解PCM原理有更多认识和掌握,对于教学来说,它也是一个有意的补充,这对实验室远程教学起了一个重要辅助作用。在数字通信原理实验平台中,除PCM实验外,主要还包括滤波、信号的频谱分析、数字通带调制解调、数字基带信号传输等几大类的实验。每个实验都有相应的实验组件来供用户用。滤波实验:在该类实验中,设计和实现了两种类型的滤波器,即FIR和巴特沃思滤波器,针对不同的滤波要求分别开发了低通、带通、高通和带阻滤波器等。信号频谱分析实

温馨提示

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

评论

0/150

提交评论