·30-电脑与信息技术2008年2月
本例中用到的数据minx=-4,maxx=4,rainy=一4,maxy=4,所得图形如图3所示:
圈3利用MATLAB编译器绘图结果
2.2MATLAB引擎
从编程复杂度的角度来说,最简单的途径就当属利用MATLAB的引擎功能闭。
与其它各种接口方式相比,引擎所提供的MATLAB功能支持是最全面的。
2.2.1VC环境设置
用MFCAppWizard(exe)建立一个应用程序,并作如下设置:
(1)通过菜单Tools/Options…,打开设置属性页,进入Directories页面,在目录下拉列表框中选择Includefiles,添加路径D:WIATLAB6p5\extem\include再在下拉框中选择Libraryfiles,添加路径D:、MA’ILAB6p5、extenluib\win32\IIlicrosofc\lIlsvc60
(2)选择菜单Project/Settings…,打开工程设置属性页,进入Link页面,在Object/librarymodules编辑框中,添加文件名libmx.1iblibmat.1iblibeng.1ib,以空格隔开。
2.2.2VC++中程序说明
调用命令engOpen打开引擎,然后将mxArray转换成在MATLAB中可操作的形式。
具体方法是:在MATLAB中将一个自定义的数据结构复制到mx.Array中,后将此矩阵放人MATLAB计算引擎的工作区中,把命令以字符串的形式传递给函数engEvalString进行执行。
使用引擎,计算程序中必须添加头文件#include“en6ne.h”,程序开始后需要打开引擎,运算完成后要释放内存并关闭引擎。
本例绘制的是一个TIG焊焊接质量神经网络中输出背面熔深(BackWidth)与两个输入参数电流Cur-rent)、清洁度(Cleaning)之间的变化曲线。
已知两个输入参数的最小值与最大值(minx=80,maxx=100,miny=30,maxy=60),采样个数取为50,即共有51个数。
X【5H,y【51】中存储了采样后的两个输入变量值,数组matdatai]中存储的是其余参数不变时,电流每变化1次,清洁度变化51次后,神经网络运算出的背面熔深的结果。
主要程序代码部分:
倒建矩阵并命名赋值
mxmatdata=mxCreateDoubleMatrix(51,51,mxREAL);
xx=mxCreateDoubleMatrix(51,1,mxREAL);
yy=mxCreateDoubleMatrix(51,1,mxREAL);
memcpy(mxGetPr(mxmatdata),matdata,51451。
sizeddou-ble));
memcpy(mxGet_Pr(xx),x,51*sizeof(double));
memcpy(mxGetPr(yy),Y,51*sizeof(double));
鸺变量写到matlab工作空间并命名
ensPutVariable(ep,"mxmatdata”,atxmatdata);
engPutVariable(ep,"】【】【”,xx);
ell【gPutVariable(ep,"yy”,yy).
engEvaIString(ep,"【)【,Y]=meshgrid(xx,)ry);”);
en#valString(ep,"mesh(X,Y,mxmatdata);”);
程序运行后得到的图形如图4所示:
图4利用MAlrIAB引擎绘图结果
3结论
本文通过两个实例把VC++与MATLAB的数值计算、图形显示功能进行了结合,既保持了VC++的良好用户界面和高执行效率,又保持了MATLAB的优良算法,使VC++和MArlLAB各自的优势能够得到充分发挥。
当VC与MATLAB互传的参数比较简单或无参数传递时,使用MATLAB编译器实现相对简单方便,且可以脱离MATLAB环境运行,但图形不方便存储;当需要互传大量数据,则使用MATLAB引擎更容易实现,图形方便存储,但不能脱离MATLAB环境。
参考文献:
【l】1李天昀,葛临东.综述MATI.AB与vc++的交互编程叽计算机仿真,2004,21(9):193—196.
【2】何强,何英.MATLAB扩展编程[MI.北京:清华大学出版社,2002.【31柏晟.VC++与MATLAB混合编程的方法研究与实现忉.电脑开发与应用,2006,19(4):24-27.
【4】潘爱民,王国印.Visualc++技术内幕【M】.北京:清华大学出版社,1998.
【51飞思科技产品研发中心.MATLAB6.5应用接口编程【M】.北京:电子工业出版社。
2003.
【61周灵.基于COM的vC调用Madab的方法及实现【J】.中国科技信息,2006,24:131—133.
忉张志涌.精通MATLAB6.5版【明.北京:北京航空航天大学出版社,2003.
18】张威.MATLAB外部接121编程【M】.西安:西安电子科技大学出版社。
2004.
基于VC++和MATLAB混合编程绘制三维图形
作者:张慧, 杨峰, ZHANG Hui, YANG Feng
作者单位:江苏科技大学材料科学与工程学院先进焊接技术省级重点实验室,江苏镇江,212003刊名:
电脑与信息技术
英文刊名:COMPUTER AND INFORMATION TECHNOLOGY
年,卷(期):2008,16(1)
被引用次数:1次
1.张威MATLAB外部接口编程 2004
2.张志涌精通MATL AB 6.5版 2003
3.周灵基于COM的VC调用Matlab的方法及实现[期刊论文]-中国科技信息 2006(24)
4.飞思科技产品研发中心MATLAB6.5应用接口编程 2003
5.潘爱民;王国印Visual C++技术内幕 1998
6.柏晟VC++与MATLAB混合编程的方法研究与实现[期刊论文]-电脑开发与应用 2006(04)
7.何强;何英MATLAB扩展编程 2002
8.李天昀;葛临东综述MATLAB与VC++的交互编程[期刊论文]-计算机仿真 2004(09)
1.沈颖.宋文强基于VC++和Matlab的图像处理比较研究[期刊论文]-电脑知识与技术 2009(16)
本文链接:/Periodical_dnyxxjs200801010.aspx。