第20鲞第2期2008年6月江苏工业学院学报JOURNAl,OFJIANGSUPOLYTECHNICUNIVERSITYVoL20N“2Ju儿2008文章编号:1673—9620(2008)02一0042一03MATLAB与VC混合编程及应用研究王成杰1,王洪元2(1.常州纺织服装职业技术学院信息技术系,江苏常州213164;2.江苏工业学院信息科学与工程学院,江苏常州213164)擅耍:介绍了MATLAB与VC混合编程的调用方法及其适用场合.针对宁波机场公路延伸段100m长路段的。道路平整度指效(IRI)4的预测问题,选择MATLAB调用VC混合编程的方法。通过调用以VC格式绾写的IFS分形插值函致,在MAT・LAB环境下绘制出自仿射变换的分形插值函敷的图象,为成功分析该问题提供了帮助.关■词:混合编程,MATLAB外部程序接口I中圈分类号:TP391文献标识码:AMEX文件,选代函数系,分形插值ApplicationandResearchofMATLABandVCCombinedProgrammingWANGCheng--jiel,WANGHong--yuanz(1.DepartmentofInformationTechnology,ChangzhouTextileGarmentInstitute,Changzhou213164,Chinal2.SchoolofInformationSdenceandEngineering,JiangsuPolytechnicUniversity,Changzhou213164)Abstract:ThispaperintroducesthecallingmethodandtheapplicationoftheMATLABandVCcombinedprogramming.Accordingtothepredictionproblemoftheinternationalroughnessindex(IRI)inthe100mextendedsegmentofNingboairporthighway,itconsidersthecombinedprogrammingmethodbyMATLABcallingVCprogram:callingtheiteratedfunctionsystem(IFS)byVCfineformat,drawingtheaf—transformationoffractalinterpolatedfunction(FIF)graphbasedonMATLABlanguage.Itoffershelpandsupporttosolvethispredictionproblem.Keywords:combinedprogrammingFTFtheexternalprogramminginterfaceofMATLABfMEXfileIFS,MATLAB的特点是编程简捷,尤其对矩阵的操作和精准绘图功能都强大且便捷[1]。VC++也是编写各种复杂应用程序的首选,尤其擅长处理循环,和迭代等耗时多的算法,执行效率高,采用混合编程方法能兼二者所长,对处理实际应用同题将非常有利。本文介绍MATLAB与VC混合编程的环境、调用方法及适用场合,最后选择MATLAB调VC的混合编程方法,应用于道路平整度指数的预测问题,并给出了实现代码。1混合编程的环境MATLAB与VC等其他语言混合编程,涉及到了两个或两个以上的软件,需要它们提供相应的外部程序接口和配置集成开发环境。收稿日期:2007—09—24作者简介:王成杰(1979一),男,江苏扬中人,讲师,联系人t王洪元.万方数据王成杰等.MATLAB与VC混合壕程及应用研究1.1良好的外部程序接口支持MATLAB外部程序接口可以方便地完成MATLAB与外部环境的交互。同时,VC++可以通过共享动态连接库dll方式,提供应用程序接口。1.2用户配置软件的集成开发环境一般,在MATLAB软件中,通过mex—set-up,mbuild—setup语句,进行高级语言编译器的关联。在VC等软件中,需要增加MATLAB外部程序接口函数的安装路径。配置好集成环境后[2],用户的应用程序可以在一个软件的集成环境中进行编译、调试了,减少了MATLAB与VC之间的切换。1.3其他支持MATLAB的C/C++数学函数库中的函数在混合编程时也可以为用户所调用。第三方编译软件也能支持MATLAB和VC的混合缩程。2混合编程调用方法和适用场合2.1VC调用MATLABVC调用MATLAB有多种形式‘2・31,此法充分利用已有MATLAB的计算程序,使用VC编制友好用户界面,缩短软件的开发周期。2.2MATLAB调用VCMATLAB调用VC是为了追求程序执行效率,解决MATLAB中循环处理,迭代算法效率低的瓶径问题。VC等高级语言按一定格式编写、调试好的mex源文件,可以在MATLAB集成环境中编译成mex文件(一种diD,对于熟悉C语言编程人员,使用此法减少了软件问数据转换的负担。3混合编程应用实例本例是针对。道路平整度指数(IRI)的预测问题”,编写迭代函数系(IFS)的分形插值算法,绘制了自仿射分形插值函数的图象。为“基于分形插值函数模型的非等距时序灰色预测方法[. ̄7"提供了重要的帮助。表1为宁波机场公路延伸段(沥青混凝土路万方数据・43・面)100m长路段的IRI观测效循。通过将原始的观测数据代人分形插值函数模型的计算公式‘钉,得到宁波路段路面平整度指数预测的迭代函数系:∞-=(;)一(::42:一:52)(;)+(:.7,)纰=(;)=(::;:一妻94)(;)+(;::4)∞a=(;)=(:::;一支68)(;)+(::::)埘t=(;)=(:::;一皇63)(i)+(::;:)编写迭代函数系分形插值函数,计算产生{劬,铆,∞,,劬)的吸引子点集,即自仿射分形插值的图象数据。襄1100m长路段的IRI观舅救揖T-blelTheⅡU峭瓣dataofthel00mread显然,MATLAB编写迭代函数效率不高,VC绘图不及MATLAB方便,故编写基于vc/c的mex源文件。文件命名为diedai.C,其中my—graph函数是VC计算子程序,采用随机算法迭代产生{∞l,眈,劬,龇}的吸引子,mexfunction函数是MATLAB的接口函数,负责数据传递,通过调用my—graph函数,得到图象点数据,传回MATLAB空间,最后在MATLAB中绘制该自仿射分形插值函数的图象。主要的实现程序如下:#include。math.h”#include“meN.h—voidmy—graph(double。XX,double。YY){doubleaC43;{0.24,0.30,0.16,0.27),doubleb[43;{0,0,0,0)ldoubleC[4]一{0.43,0.78,0.42,0.68);doubledE4]={一0.52,一0.94,一0.68,一0.63),doublee[4]={0,0.5,1.12,1.52),doubleg[4]={2.71,3.64,3.54,3.70),doublePE4]={0.18,0.40,0.18,0.24)Idoublex=0,y=0,newx,newy,rn,total,・44・江苏工业学院学报2008血intk,i‘for(i=0;i<20000,i-H-){k=O,rn=randO/32767.0,total=p[03,while(total<rn){k++ltotal+---_p[k],)newx=a[k]。x+b[k]。y+e[k],newy—c[k]。x+d[k]。y+g[k],x2newx;y2newyIxx[i]=x,YY[i]=y;}}voidmexFunction(intnlhs,mxArray。plhs[],intnrhs,constmxArray*prhs[])(double。x,。y,plhs[03:mxCreateDoubleMatrix(1,20000,mxREAL)fplhs[1]=mxCreateDoubleMatrix(1,20000,x:mxGetPr(plhs[o])Iy:mxGetPr(plhs[1])Imy—graph(x,y),)将上面的源程序diedai.C进行编译,在diedai.c产生diedai.dll[x,y]:diedaion即可得到图1。啦!m脚hoftim-m雎咖咖叫妯订脚圈1自仿射分形插值函数的圈■万方数据[x,y]中图象的数据可以存储起来,对确定区间某一横坐标,若其吸引子点集中某点迭代后的均方偏差最小,则认为是理想的数据,采用其构造等距时序IRI值,最后结合GM(1,1)模型‘叼进行灰色预测,有较好的精度‘5 ̄71。4结论混合编程方法使得MATLAB和VC实现了互相调用,但对于具体应用问题,可通过分析,使用相应的调用方法。对于分形插值一类的迭代算法,使用MATLAB调用VC方法,能较好解决迭代算法和精准绘图两个难题。本文的所有程序均在MATLAB7.1和VC++6.0环境内调试通过。参考文献:[1]王洪元。石澄贤,郑明方.MATLAB语言及其在电子信息工程中的应用[M].北京・清华大学出版社.2004.[2]刘志俭.MATLAB应用程序接口用户指南[M].北京・科学出版社,2000.[3]肖永韧.VC与MATLAB混合编程之DLL实现方法口].计算机工程与应用.2001,37(13)-174--176.[4]曾文曲,王向阳.分形几何原理及其应用[M].沈阳・东北大学出版社.2001.Is]陈有亮.非等距时序列灰色预测方法及其在岩石力学与工程中的应用[J].系统工程理论与实践。2003.23(11)・130—134.[6]乔正明,王成杰t蒋艳.基于分形插值函散模型的非等距时序灰色顶测方法[刀.统计与决策.2007,240l29—31.杜.1992.mxREAL)}MATLAB中键人mex文件。在MATLAB命令提示符下输入:plot(x,y,’.’)grid[7]邓橐龙.灰色系统理论教程[M].武汉-武汉理工大学出版