课题:VC与Matlab混合编程.doc

课题:VC与Matlab混合编程.doc

ID:59518251

大小:82.00 KB

页数:8页

时间:2020-11-05

课题:VC与Matlab混合编程.doc_第1页
课题:VC与Matlab混合编程.doc_第2页
课题:VC与Matlab混合编程.doc_第3页
课题:VC与Matlab混合编程.doc_第4页
课题:VC与Matlab混合编程.doc_第5页
资源描述:

《课题:VC与Matlab混合编程.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、VC与Matlab混合编程本文主要介绍VC与Matlab混合编程的两种方法,并详细介绍了VC向Matlab传递复杂数据:结构体的方法,有详细代码说明。Matlab 主要面对科学计算、可视化以及交互式程序设计的高科技计算环境,但由于Matlab开发平台上开发的程序不能脱离Matlab运行环境,因而在处理一些实际应用问题时显得灵活性不足,而VC++则在一定程度上能够弥补这一漏洞,因此,将二者结合共用,各献其长,可以为科研工作和工程开发提供更为强大的技术支持。Matlab作为控制系统设计的一种通用工具,它可以很方便的和VC进行连接。一般而言,Matlab与VC混合编程的实现方法有很多种,这里主要介绍

2、以下两种:1.  VC调用Matlab Engine的方式:MatlabEngine是一组Matlab提供的接口函数,支持C/C++语言,MatlabEngine采用C/S(客户机/服务器)模式,Matlab作为后台服务器,而C/C++程序作为前台客户机,向MatlabEngine传递执行命令和数据信息,从MatlabEngine接收执行结果。用户可以在前台应用程序中调用这些接口函数,实现对MatlabEngine的控制。采用这种方法几乎能利用Matlab全部功能,但是需要在机器上安装Matlab软件,缺点是执行效率较低。下面简单介绍下这种方式的实现步骤:1.1API接口介绍先来介绍一组Mat

3、lab提供的引擎API接口:(仅作简单功能介绍,详细参数说明请参考Matlab帮助)Engine*engOpen(constchar*startcmd)启动Matlab引擎intengClose(Engine*ep) 关闭Matlab引擎int engEvalString(Engine*ep, constchar*string)执行Matlab表达式mxArray*engGetArray(Engine*ep,constchar*name)获取一个变量数组的值int engPutArray(engine*ep,constmxArray*mp)设置一个变量数组的值intengPutVariable

4、(Engine*ep,constchar*name,constmxArray*pm)同上mxArray*engGetVariable(Engine*ep,constchar*name)获取一个变量intengOutputBuffer(Engine*eP,char*p,intn)获取输出字符串 1.2   VC环境配置要想在VC集成环境下调用Matlab引擎实现VC和Matlab的混合编程,一般需要经过以下几个必要的步骤:(以下以Matlab2008a和VS2005版本为例)(1)添加include路径:将“externinclude”(在Matlab的安装路径下)路劲添加到VC编译器的in

5、clude下(2)添加lib路径:将“externlibwin32microsoft” (在Matlab的安装路径下) 路径添加到VC编译器的lib下(3)加载lib:需要加载至少libmx.lib、libmat.lib、libeng.lib三个库(4)include头文件:在要使用 engine 函数的地方包含engine.h头文件 1.3   引擎调用接下来就可以在VC中调用Matlab引擎了,简单的示例代码如下:#include"engine.h"#pragmacomment(lib,"libeng.lib")#pragmacomment(lib,"libmx.lib")#pra

6、gmacomment(lib,"libmat.lib")voidTestDeno(){Engine*pEng=NULL;if(!(pEng=engOpen(NULL))){printf("Openmatlabengingfail!");return;}//callEngineplotA*sin(t)+BA=2B=1mxArray*A=NULL;doubleinit=2;A=mxCreateDoubleMatrix(1,1,mxREAL);memcpy((void*)mxGetPr(A),(void*)&init,sizeof(double));engPutVariable(pEng,"A",A

7、);init=1;memcpy((void*)mxGetPr(A),(void*)&init,sizeof(double));engPutVariable(pEng,"B",A);mxDestroyArray(A);Sleep(3*60*1000);engEvalString(pEng,"t=0:0.2:7;plot(t,A*sin(t)+B);");if(NULL!=pEng){engClose

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。