1、毕业设计开题报告电气工程与自动化基于MATLABWEBSERVER的数值计算算法演示与实现一选题的背景与意义随着计算机技术的迅速发展,数值方法在工程技术领域中的领域越来越广泛,并且已成为与计算机之间的桥梁,和理论研究、科学实验并列为科学研究的三大分支。要解决工程问题,往往需要处理许多数学模型,这要花费大量的人力和时间,同时许多数学模型无法用解析法得到解。使用数值方法并利用计算机就可以解决这些问题。目前,有关“数值方法”成为了各高等院校工程类学生必学课程之一。然而,当前有关各种数值计算算法的演示以及教学,都相对比较呆板和单一。老师通过板书,或者使用一个固定PPT、FLASH动画(一般都是提前做好
2、的一个特定例子)来推导并演示一种算法的大致流程。但是,这样无法具体到每一个方程计算过程,不方便学生的实际理解。同时,如果碰到一些非常繁杂的计算,在课堂中根本无法解答。这样严重影响教学质量。因此,我们有必要寻求一种更有效的教学和演示方式。为了提高教学质量,目前各大院校都有使用MATLAB来进行教学,但是这种单纯通过MATLAB初级计算功能来直接编程并演示各种算法的方式,效果并不是很显著。一方面,这需要编程来实现,这对初学者,特别是对算法不理解或者对MATLAB不是很了解的同学,是非常困难的。另外,通常的MATLAB算法程序只会给出结果,具体的中间计算过程需要通过观察程序来学习。也显得很繁杂,抽象
3、。另一方面,这必须要求每一台电脑都安装MATLAB这个软件,显得非常不方便的。以下各技术,为这些问题提供了解决途径。近年来,基于MATLABWEBSERVER的研究已经日益流行。以下是它的工作原理MATLAB的WEB应用由MATLABWEBSERVER和MATLABWEB服务代理两部分组成。MATLABWEBSERVER是一个多线程可执行的TCP/IP应用程序。MATLABSERVEREXE是MATLAB应用程序运行的服务器环境,负责管理WEB应用与MATLAB间的通讯MATLABWEB服务代理是一个可执行程序MATWEBEXE,一个MATLABWEB服务器的TCP/IP客户端,同时也是WEB
4、的CGI扩展它将对MATLAB的请求重新定向到MATLABSERVEREXE进行处理。一个完整的实验通常由三部分组成输入HTML文档,MATLAB程序M文件和输出HTML模板文档。用户在浏览器上输入数据,提交给服务器上的MATLAB进行计算,把计算结果显示在浏览器上。MATLABSERVER是一个多线程的基于TCP/IP的服务器。它运行输入HTML文档内的的隐藏域MLMFILE的值指定的M文件中,在HTML文件、MATLAB和M文件之间建立联系,唤起文件MATWEBEXE,再由它来执行这个M文件,MATLAB是MATLABSERVER的一个客户端应用,利用CGI把HTML的输入数据传给MATL
5、ABSERVER。本课题,就是基于该技术,来使MATLAB教学网络化。从来改进上面提到的不足之处。基于MATLABWEBSERVER的数值计算算法演示与实现这个课题的研究,就是通过MATLAB算法编程、绘图、动画制作,来生动、丰富地向学习者们展示各算法的运算过程与原理,将算法的演示具体到每一个具体例子。并基于MATLABWEBSERVER,采用B/S结构(浏览器与服务器结构)来构建一个网络教学实验室,将演示和教学网络化。主机利用MATLABWEBSERVER来实现网页和本机数据的传递,然后调用本机的MATLAB来汇出图像,制作动画以及计算出计算结果。再通过网络反馈给用户。这样,在教学和演示上,
6、就避免了安装MATLAB软件和烦琐的程序输入与调试的局限性,能随时随地的利用INTERNET方便快捷的进行演示。用户只需要在输入页面输入要求的变量,提高给服务器,便会得到一系列的演示图像或者动画,以及计算结果。让数值计算算法演示和教学更加便捷、直观、生动、形象、高效,便是本课题的研究意义。二研究的基本内容与拟解决的主要问题本课题的基本研究内容既如何选用合适的表现形式,来表现每一个算法。然后再使用MATLABSERVER来实现数据的交互。要实现这个目标,我们需要研究一下几个要点1基于MATLABWEBSERVER的数据交互这是本课题的一个研究要点。在这方面,我们主要是研究是如何通过MATLABW
7、EBSERVER来实现参数的传递以及演算结果与客户端之间的交互。主要需要研究并解决客户端的参数如何传递到服务器以及服务器MATLAB的演算结果如何返回客户。2算法的编程与演示这是本课题的核心。如前面所言,为了有助于学习者的实际理解,要尽量把演示具体到每一次计算。而不同的数值方法,表现形式是不同的。这方面的研究主要集中在下面几个问题21对各数值算法的编程这个是设计的基本,因为只有正确的编程才能实现其余的步骤。为了配合演示的目的,编程的时候要尽量考虑方便各种绘图或者其余演示方式。22MATLAB的绘图以及保存每一个算法的计算原理都不尽相同,因此,我们要选择最贴切、最合理的画图时机和方式,来形象地表
8、现各个算法。某些算法的画图方法比较特别,比如高斯消元法等算法如何将矩阵的变化使用MATLAB实时绘制出来。其中设计括号的绘制以及括号里的数字如何变化。图像绘制成功以后,还要加以保存(例如JPEG格式)。23如何利用MATLAB制作简单的动画当图片太多了,单纯使用图片来进行演示显然是不可行的。为了演示的连贯性和可视化,本课题需要研究如何利用MATLAB将之前的图像以一定的方式做成动画。24如何利用以上两个技术设计演示方式一方面,每一个算法都是不同的,因此每一个算法的演示如何用图像或者动画来表示是本课题的一个难点。另一方面,每一种算法需要MATLABWEBSERVER的传递的参数也是需要研究的。2
9、5优化用户界面作为演示,怎么让学习者更有效地学习是非常重要的一个因素。因此,如何优化及图像表现形式,让界面变得更加友好,也是研究的一个重要项目。三研究的方法与技术路线1客户端与服务器之间的数据交互基于MATLABWEBSERVER的工作原理,要完成客户端与服务器之间的数据交互包括参数的传递以及结果的返回),我们需要11构建服务器APACHE是世界上排名第一的服务器,根据NETCRAFT所做的调查,世界上百分之五十以上的WEB服务器在使用APACHE。而且APACHE是免费的。因此我选用了APACHE服务器。因为这个不是研究的重点,本课题只需要涉及到与MATWEB相关的配置即可。主要工作是修改H
10、TTPDCONF来实现。具体修改方式可以参考APACHE使用方法。12编写输入、输出页面并完成MATLAB的相应设置用户在进行实验时,实验的输入数据通过网页以表单的形式发送到通用网关接口程序。通用网关接口程序收到输入数据后,分析输入数据,调用与之相关的MATLAB的M文件。这时,通过网关接口程序将利用系统的MATLAB服务进行MATLAB运算,计算出结果,绘制出输出图像以及动画,传回数据而完成演示过程。要完成上面的要求,必须要修改M文件,基本的M文件时不能实现与网页的参数传递的。因为MATWEBEXE从HTML输出页面提取出来的数据都是结构型数据,它要作为输入参数参数传递给M函数文件。该结构体
11、变量的每一个字段名称是以字符型变量存放的,因此,必要时还需将这些字符型数据转化成数值型。这个步骤可以使用STR2DOUBLE或者STR2NUM来实现。在M程序的最后,需要TMPFILEWHICH(OUTPUTFILE以及RETSTRHTMLREPOUTP,TMPFILE这两个语句把结果输送回网页。另外也需要对MATWEB进行设置。首先,要将MATLAB目录下的MATWEBCONF和MATWEBEXE两个文件复制至网页文件内。为了方便起见,可以新建文件夹CGIBIN来存放这两个文件。然后修改MATWEBCONF文件。同时,MATLABWEBSERVER下的MATLABSERVERCONF也是需要
12、做一定的修改。这两个配置文件在接下来做设计时进行根据实际需要进行修改。2算法的编程与演示21算法的编程运用之前在数值方法与MATLAB语言课程上所学的知识,对各个重要的算法进行编程,包括二分法,牛顿迭代法,高斯消元法,雅克比迭代发,高斯迭代法等各种常用算法。22MATLAB的图像绘制MATLAB具有强大的绘图能力。根据算法的不同,我们可以在算法循环的每一个关键步骤都进行绘图。每一个步骤保存一张图片。具体语句可以参考使用WSPRINTJPEG命令将图形结果写成JPEG格式文件。具体在程序的哪个部分插入画图语句,根据各算法的表现形式而定。另外,图像的属性都能通过SET语句来进行定义。至于矩阵的画法
13、,可以创建一个函数。它的功能是输入矩阵,就能把它在相应位置画出来。函数的具体实现是构思使用TEXT()语句,将矩阵里的每一个元素,用一个循环语句一个个画出来。然后再用PLOT()语句画出两边的括号。23MATLAB的动画制作计算机动画是指用计算机自动或半自动生成一系列的景物(帧)动画,其中当前帧是对前一帧动画的部分修改,通过以足够快的速度显示这些帧以产生动态的效果。MATLAB实现动画的方式有很多种,可以直接调用系统的动画函数产生动画,也可以通过不断显示更新的静态画面以实现动画变化效果;还可以通过不断改变视窗大小、视角变化、颜色变化产生动画。在动画生成过程中,通过捕捉一系列当前帧又可将动画保存
14、成视频文件。本设计准备采用一下方式制作动画通过32步骤画成的图像,使用IMREAD语句将各内容读入一个数组。然后在用MOVIE2AVI()这个函数,将读入数组的图像,制作一个AVI视频文件,将数组中的图像以一定的帧数放出。24部分算法的演示方式以及通过MATLABWEBSERVER的参数传递方案牛顿迭代法的演示牛顿迭代法也称为切线法。在演示作图时,先画出坐标轴以及函数,然后把初始迭代值X0以标记在X轴上。然后做一条通过X0的垂直于X轴的虚线,与函数相交于(X0,F(X0)。之后过该点取切线(用实线表示),与X轴相交于下一个迭代值。每一次取切线和画竖线都取一幅图,直到取到误差内的X值为止。之后制
15、成动画。参数传递方面,输入页面中是输入的函数、初始迭代值、迭代次数、误差。网页送入MATLAB一个结构H,包括了输入的函数、初始迭代值、迭代次数、误差(因为网页输入的为字符,所以需要用STR2NUM语句转化为数字)。返回也是一个结构,它的内容包括解、迭代次数,以及字符(迭代次数如果超过最大迭代次数,则显示NISFULL)。通过MATLABWEBSERVER传回输出网页。图像和动画的绘制在服务器的MATLAB中执行,并传输到输出页面。高斯消元法的演示高斯消元法本质上是加减消元法。因此,只需要给出每个消元的步骤就好了。先做一个画数组的函数,该函数的参数是一个数组(需要画的那个数组)和两个数字(代表
16、要画的数组的起始坐标)。然后,我们就可以通过这个函数,把每一步增广矩阵(A|B)的变换过程全部画下来,一直到消元法进行到底。之后把用回代法解除的值用图像显示出来。每一次列的变化都画成一幅图,最后以动画显示。参数传递方面,在输入页面输入的是需要方程组,输入页面通过MATLABWEBSERVER传递给MATLAB的是一个结构,其内容是该方程组(因为网页传递给MATLAB的是字符数组,所以需要制作一个字符数组转化为数字数组的函数)。MATLAB计算后通过MATLABWEBSERVER将计算结果返回给网页。图像以及动画在服务器制作,并返回给输出页面。本次研究会尽量多覆盖常用算法。其余算法可以根据研究需
17、要在设计中继续添加25其余因素的实现作为人机交互的教学界面,应该做得尽量友好简介,方便学习者的学习。可以使用网页制作工具(本研究使用的是FRONTPAGE)来美化网页,然后对网页做一些合理的改进。比如在演示前,都会出现一段文字,对该算法进行详细讲解,介绍这个算法并说明优缺点。然后再通过演示,可以有效地提高学习效率。综合以上所述,本课题期望实现以下目标根据该课程教学大纲的要求,给出详细的算法讲解、算法流程、参考程序等,特别是能够清楚地显示各种算法在不同条件的运算过程和最终结果,可以用图形直观地显示各种变化。学员可以自己修改参数,完成各种数值试验。该系统采用B/S的形式,能在网络上运行,学习者可以
18、通过网络使用。下图是整个应用程序的基本框架图1应用程序的基本框架四、研究的总体安排与进度20101126201012搜集资料,课题调研,对任务进行初步了解。201012120101220确立系统结构及功能,编写开题报告,翻译英文文献和完成综述。2011120112完成系统核心部分各种算法的具体演示以及与输入输出页面的结合。2011220114对系统进行最后的美化与修饰。然后将系统运用于教学和学生实验中,对所做工作总结,写毕业论文。五、主要参考文献1APESTERANDRISMAILOVINTERACTIVEAPPLICATIONSINTEACHINGWITHTHEMATLABWEBSEVERJ
19、VESTNIKNATIONALNOGOTECHNICESKOGOUNIVERSITETA“KCHPI“,2214192CHENGCHENGLIAWEBSERVICEMODELFORCONDUCTINGRESEARCHINIMAGEPROCESSINGJJOURNALOFCOMPUTINGSCIENCESINCOLLEGES,2010,2552942993庄思发利用MATLABWEBSERVER实现在线作图J计算机应用系统,2010,19(6)2232254江玉珍MATLAB应用于图形学中的计算机动画的教学研究J电脑知识技术,2010,611533753385翟璐璐,谢维奇基于MATLABWEBSERVER的数值分析网络实验室的开发与实践J福建电脑,2007,(11)1221246张晓光,王艳芬,王刚,刘卫东基于MATLABWEBSERVER的数字信号处理远程仿真J电气电子教学学报,2009,31186877姜浩智,廖宁华VC与MATLAB混合编程的实现方法J中国高新技术企业,2010,(6)13158李伟红,龚卫国,秦岚,刘嘉敏基于MATLAB和WEB技术的远程数据处理方法J测控技术,2004,(4)23259金一庆,陈越,王冬梅数值方法M北京机械工业出版社,200010张德丰,赵书梅,刘国希MATLAB图形与动画设计M,北京国防工业出版社,2009