MEX文件在人工智能软件中的应用(精)_第1页
MEX文件在人工智能软件中的应用(精)_第2页
MEX文件在人工智能软件中的应用(精)_第3页
MEX文件在人工智能软件中的应用(精)_第4页
MEX文件在人工智能软件中的应用(精)_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

收稿日期:2003-01-05。本论文受国家自然科学基金项目(50275043资助。孙鲁涌,副教授,主研领域:CAD ,智能设计,机构与传动等方面的研究。MEX 文件在人工智能软件中的应用孙鲁涌1,2周异2张云电21(浙江大学生产工程研究所杭州3100272(杭州电子工业学院机电分院杭州310037摘要在使用M AT LAB 软件进行人工智能领域中的研究开发工作时,常会遇到运行速度太慢的问题,合理地使用MEX 文件可有效地解决此问题。本文介绍在Windows 中基于C 语言的MEX 文件的应用方法,并以梵塔程序为例说明运用MEX 文件可显著地优化软件运行效率,这在人工智能等领域的开发应用中有重要作用。关键词人工智能MEX M AT LAB 优化APP LICATION OF MEX FI LE IN ARTIFICIAL INTE LLIGENCE SOFTWARESun Luy ong 1,2Zhou Y i 2Zhang Y undian 21(Institute o f Production Engineering ,Zhejiang University ,Hangzhou 3100272(School o f Mech 2Electronic Engineering ,Hangzhou Institute o f Electronic Engineering ,Hangzhou 310037Abstract While using M AT LAB s oftware to carry on the research and development in the artificial intelligence field ,the problem of slow run in speed of the s oftware was often met.It can be s olved effectively by using MEXfile.In this article ,the way of how developing MEXfile with C language on Windows platform was introduced.F or illustration ,a Hanoi T ower program was developed to show that the application of MEXfile can obviously op 2timize the running efficiency of the s oftware.This makes important function in s oftware development and application in artificial intelligence and other fields.K eyw ords Artificial intelligence MEX M AT LAB Optimization1前言在人工智能等领域的应用软件开发中,为了提高软件的研制效率和质量,需要最大限度地利用开发工具的特长。M AT LAB 作为一个工程应用软件在人工智能领域中已经有了很多的应用。M AT LAB 有其自身的特长,如编程简捷方便,有强大的函数库和工具箱支持,在矩阵运算、数值拟合、二维和三维图形的表达方面具有极强的功能等,但M AT LAB 也存在一些不足,如在某些应用中运行速度偏慢,其应用程序界面开发不如VC 方便强大等。在正确和有效地使用M AT LAB 的同时,适当的结合C 语言程序的应用,可以弥补其不足,使程序质量提高。本文主要讲述采用VC 编写器编写MEX 文件,然后通过在M AT LAB 中加载该MEX 文件来实现M AT LAB 和C 程序的连接,以改善程序的运行效率、提高程序的总体质量,并以具有人工智能特点的梵塔程序为例,介绍上述方法在人工智能领域软件开发中的实际意义和作用。2MEX 文件介绍M AT LAB MEX 文件是M AT LAB 系统的外部程序调用接口。通过它,用户可以完成以下功能:1可以在M AT LAB 系统中像调用M AT LAB 的内建函数一样调用已经存在的用C (C +语言编写的算法,而无需把这些程序重新编写为M AT LAB 的M 文件,从而使资源得到充分利用;2当使用M AT LAB 进行大规模的数据处理时,M AT LAB 往往由于执行效率的问题而显得力不从心,这时可以使用其他高级编程语言进行算法的设计,然后在M AT LAB 中调用,从而大大地提高数据处理的效率;3通过MEX 文件,用户可以直接对硬件进行编程,进一步拓展了M AT LAB 的应用领域。调用并执行的动态链接函数,在Micros oft Windows 操作系统中,这种文件类型的后缀名为dll 。而在其他的平台上,则有较大的变化,例如在Apple 公司的Macin 2tosh 上,后缀名为mex 。MEX 文件的使用极为方便,只需在M AT 2LAB 命令提示符下键入MEX 名即可,与M AT LAB 的内建函数的调用方式完全相同。在本文中,MEX 文件是通过Visual C +集成环境去建立的。3MEX 文件的建立下面通过梵塔程序的编制来说明如何建立MEX 文件。梵塔程序要完成的功能是:有三根竖杆A 、B 、C 。A 杆上套有若干个套圈,套圈外径各不相同,大的在下,小的在上。要求把这n 个套圈从A 杆移到C 杆,在移动过程中可以借助B 杆,每次只允许移动一个圈,且移第21卷第3期计算机应用与软件Vol 121,No 132004年3月C om puter Applications and S oftware Mar 1,2004 图1梵塔程序完成目标示意图动过程中,三根杆上都保持大圈在下,小圈在上。其完成的目标示意图如图1所示 。该MEX文件的主要代码为:v oid m ove(char3getone,char3putoneprintf(%s-%sn,getone,putone;定义指向三个套圈的指针v oid hanoi(int n,char3one,char3tw o,char3threeif(n=1m ove(one,three;elsehanoi(n-1,one,three,tw o;m ove(one,three;hanoi(n-1,tw o,one,three;v oid mexFunction(int nlhs,mxArray3plhs,int nrhs,const mxArray3 prhs/3定义程序中使用的变量3/int n;char3one;char3tw o;char3three;int bu flen1,bu flen2,bu flen3,status;/3检查输入输出变量的个数和类型3/if(nrhs!=4mexErrMsgT xt(F our inputs required.;else if(nlhs1mexErrMsgT xt(T oo many output arguments.;if(mxIsChar(prhs1!=1mxIsChar(prhs2!=1mxIsChar(prhs 3!=1mexErrMsgT xt(The second,third and fourth inputs must be a string.;/3获取输入字符串的长度3/bu flen1=(mxG etM(prhs13mxG etN(prhs1+1;bu flen2=(mxG etM(prhs23mxG etN(prhs2+1;bu flen3=(mxG etM(prhs33mxG etN(prhs3+1;/3为字符串指针分配内存3/one=mxCalloc(bu flen1,sizeof(char;tw o=mxCalloc(bu flen2,sizeof(char;three=mxCalloc(bu flen3,sizeof(char;/3从输入参数中获取字符串,并判断操作的正确性3/status=mxG etS tring(prhs1,one,bu flen1;if(status!=0mexW arnMsgT xt(N ot enough space.S tring is trucated.;status=mxG etS tring(prhs2,tw o,bu flen2;if(status!=0mexW arnMsgT xt(N ot enough space.S tring is truncated.;status=mxG etS tring(prhs3,three,bu flen3;if(status!=0mexW arnMsgT xt(N ot enough space.S tring is truncated.;hanoi(n,one,tw o,three;return;从上面的源程序看出,MEX文件主要由两个截然不同的部分组成,它们分工明确,分别用于完成不同的任务:第一部分称为计算程序部分,它包含了所有实际完成计算功能的源代码,用来完成实际的计算工作;第二部分称为接口程序部分,它是计算程序同M AT LAB环境之间的接口,用来完成两者之间的通信任务。接口程序的名字为mexFunction,拥有四个参数,分别为prhs,nrhs,plhs和nlhs,其中prhs为一个mxArray结构体类型的指针数组,该数组的元素按顺序指向所有的输入参数;nrhs为整数类型,它标明了输入参数的个数;plhs同样为一个mxArray结构体类型的指针数组,该数组的元素按顺序指向所有的输出参数, nlhs则标明了输出参数的个数,为整数类型。在接口程序中,用户主要可以完成两个方面的任务:一方面,是从输入的mxArray结构体中获得计算所需的数据,然后在图2梵塔程序的运行过程用户的计算程序中加以使用;另一方面,用户同样可以将计算完毕的结果返回给一个用于输出的mxArray结构体,这样M AT LAB系统就能够认识从用户计算程序返回的结果。MEX文件在Visual C+中调试通过后,可以生成为一个动态链接库文件(filename.dll,然后只要在M AT LAB中调用该动态链接库文件即可。梵塔程序的运行过程界面之一如图2所示。4MEX文件在人工智能软件中的应用意义与作用M AT LAB提供的庞大的工具箱功能,它方便于人工智能方面软件的研究开发,是其它软件工具所无法取代的。但M AT2 LAB对循环语句执行等方面的速度偏慢,常令人无法满意。解决的方法自然就考虑到了如何利用其它计算速度较快的语言工具与之结合使用。当采用MEX接口文件以后,会发现能较好地解决此类问题。可以利用C语言计算速度快的优点,在开发软件时将循环计算等部分内容用C语言来实现、执行,然后编写成MEX文件在M AT LAB里运行之。因此,在进行一些复杂的人工智能问题研究时,采用MEX文件来做,速度会成倍地提高。比如,对上述的梵塔程序这一例子,可采用两种方法来实现该移动操作:第一种就是像上面所述编写MEX文件来运行;第二种是直接在M AT LAB工作空间中进行该操作。通过测试,完成套圈移动所用的时间是:若取套圈数为6个,第一种方法为112分钟,第二种方法为417分钟;若取套圈数为10个,第一种方法为219分钟,第二种方法为1211分钟。可见第一种方法的运行时间要比第二种方法节省许多倍。由上述分析可知,在对于常含有较复杂和大量判断、循环语句的人工智能应用软件中,适宜地用MEX文件来处理一些较复杂的循环运算等问题时,可以有效地解决计算瓶颈现象,从而大大提高软件执行效率。5结束语把M AT LAB应用于人工智能等领域的软件研究和开发工(下转第76页2根据各个分支节点与坐标线和刻度线的距离进一步判断此点是否为曲线的起始点或终止点。 3从起始点或终止点起跟踪曲线,并统计当前曲线跟踪的累积运动方向。标记已跟踪过的点。4如果当前跟踪曲线上的点为分支节点,则此分支节点为一个分支区域的入点。综合曲线跟踪累积运动方向与分支节点的位置分布,进一步判断曲线在此分支区域的出点。标记入点和出点。以分支出点为当前跟踪点继续对曲线进行跟踪。5以此对所有可能的起始点进行跟踪直到所有分支节点都被标记位置。此算法通过依次对水平坐标线、垂直坐标线和曲线进行扫描跟踪,得到分支节点,进一步分析分支节点从而建立图表的整体拓扑结构,然后根据节点的拓扑结构和曲线跟踪时累积运动方向对曲线进行跟踪。这样可完全克服分支区域重叠、以及长分支节点区域和曲线分布密集等问题,进一步提高分支节点畸变对识别精度的影响。图表曲线跟踪矢量化完成后,需要保存图表曲线以便以后的使用,为此需要对此曲线进行拟合。对矢量跟踪过程中产生的数据进行离散化。对离散数据用最小二乘拟合算法3进行分段拟合,并用公式加以表示,以利于数据的存储/传输和曲线重建。以上的算法基本上完成了大部分的曲线坐标线的识别。但是还有一些曲线无法识别,如曲线与曲线相互重合,曲线与坐标线刻度线相互重合,以及曲线为水平或垂直坐标线。这类情况比较特殊,为此需要通过人机交互的方式添加到工程曲线中,以便完成所有的识别和处理工作。此外,坐标线的刻度值以及曲线的标识同样需要通过这种方式完成。214数据库管理以及用户查询图像在曲线矢量化将图像中的曲线转化为拟合公式后,为方便以后的应用,需将它们存入数据库中。在后台数据库中分别建立了用户表单、图表数据表单、曲线数据表单。用户表单包含用户名、密码、使用权限等字段;在图表数据表单中包含图表名称、图表编号等字段;在曲线数据表单包含图表编号、曲线编号、曲线拟合公式的参数等字段。通过以上表结构可以看出,系统完全满足第三范式规则4。为有效管理和应用曲线图表图像矢量化所形成的大量曲线数据,推动协同设计、协同制造的实现,本系统采用了基于B/S 模式的网络方式。用户可以在任何地点任何时间通过Web 浏览器访问曲线图表图像的Web 数据库,完成数据的查询、更新等操作。本系统后台的Web 数据库采用S Q L Server2000。用户通过网页访问后台数据,网页使用兼容性较好的ASP 语言编写。通过C onnect 方法以ODBC 方式连接远程后台数据库,并通过嵌入S Q L 语句进行数据库操作。除此之外,系统还通过C ookies 和S ession 对象来确认用户权限和限定同时访问人数,以确保系统具有较高的安全性和稳定性。3实验结果为验证系统的可行性,对图1左侧所示的扫描图像(引自上海科技出版社出版的间歇运动机构设计第173页进行了实验性识别,结果满足要求(见图1右侧结果图。图14结语本文系统地介绍了基于节点的曲线矢量化系统。据以上分析结合实际使用可以得出本系统具有以下三方面的优点。系统通过分析图像中的交点并进行分类,获得了图像的整体拓扑结构,解决了实际使用过程中可能出现的分支节点畸变、分支区域重叠、以及长分支节点区域和曲线分布密集等问题。系统的交互图像编辑功能有助于对图面质量较差图像进行识别。系统采用基于B/S 的网络模式。客户可以方便地访问到所需的数据,服务端通过Web 数据库来管理所有的图表图像数据。参考文献1章毓晋,图像处理和分析,清华大学出版社,1999,3,22422612瞿洋、杨利平,“H ough 变换OCR 图像倾斜矫正方法

温馨提示

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

评论

0/150

提交评论