vc与matlab接口编程与实现.doc
文本预览下载声明
VC++与MATLAB接口编程方法与实现
[以下程序本人通过测试,都可以运行]
摘 要本文简介了VC++和MATLAB特点,探讨了MATLAB与VC++接口编程的三种方法,并详细论述了MCC和COM组件接口编程的方法和实现过程。研究表明:采用VC++和MATLAB 接口编程方法降低了编程难度,较好地发挥了两者各自的优势。
关键词MATLAB;VC++;MCC;COM;接口编程
MATLAB是美国MathWorks公司研制开发的一种科学计算软件,它将高性能的数值计算、符号计算和可视化集成在一起,并提供了大量的内置函数以及功能丰富的工具箱,使用方便,编程效率高。然而,MATLAB是一种解释性语言,运行效率低,不适合作为通用的编程平台。
VC++是Microsoft公司推出的一个基于Windows平台的可视化的集成开发环境,在运行速度、功能性以及应用程序界面开发方面功能强大,但在数值计算和图形绘制方面,VC++并不具备太多优势。因此,采用MATLAB进行核心程序的开发,用VC++制作出友好的程序界面,然后将两者结合起来,可以较大地提高编程效率。
1 VC++与MATLAB接口方法概述
1.1 MATLAB引擎方式
MATLAB引擎采用客户机/服务器(Client/Server) 的方式,提供了一组MATAB API函数,通过调用这些函数实现以用程序进程之间的数据传递。在运用中,让VC++程序作为前端客户机,它向MATLAB引擎传递命令和数据,并从MATLAB引擎接受数据信息,实现动态通讯。
1.2 MATLAB编译器(MCC)
MCC是MATLAB中经过优化的编译器。使用MCC,用户可以将MATLAB数学库、图形库和界面的MATLAB程序转化为独立于MATLAB的EXE应用程序和DLL动态连接库,在VC中编写程序界面并加载调用动态连接库,实现两者之间的连接。
1.3 COM组件
组件对象模型(简称MCR)是以组件为发布单元的对象模型。它提供一种可以共享二进制代码的工业标准,允许任何符合标准的程序访问,所以COM作为不同语言之间的协作开发是非常方便的。MATLAB的COM编译器是在MATLAB6.5中才开始提供的一个新工具,从MATLAB7.0起,这个产品改名为MATLAB Builder for COM。基于COM的混合编程方法也是Mathworks公司推荐使用的方法。
以上三种方法中,采用MATLAB引擎方式,应用程序整体性能好,MATLAB引擎支持功能全面,但需要MATLAB后台运行,不能脱离MALAB环境。而 MCC方法和COM组件方法均可以脱离MATLAB环境,应用程序运行效率高,利于软件的开发,本文将重点论述MCC和COM组件方法。
[我在书上看到还有一种方法:就是在vc中生成matlab可以调用的DLL程序:专用的接口函数mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs *prhs[]),的方式]
[有关mex的初探
(一下内容来自网友博客/wangyantsing/blog/item/c1cecfbf1333a20918d81f2f.html
感谢)
在matlab的自带编辑器中输入如下代码,并保存为fact.c,存在系统工作目录中。#include mex.hvoid mexFunction ( int nlhs,mxArray *plhs[], int nrhs,const mxArray *prhs[] ){ double n,j,*p; int i; n=mxGetScalar(prhs[0]); plhs[0]=mxCreateDoubleMatrix(1,1,mxREAL); p=mxGetPr(plhs[0]); j=1.0; for(i=n;i1;i--) j=j*i; *p=j;} 这仅仅是一个求阶乘的简单的例子。 然后,我在matlab中输入mex fact.c 如果没有错误,一切都将十分正常,然后,我输入 y=fact(5) 将输出y= 120]
[今天又在网上看到用matcom]
[ MATCOM转化法 MATCOM是MathWorks公司开发的为MATLAB中的M文件进行高效解释和调试的集成开发环境。MATCOM编译M文件,先将M文件按照与MATCOM的cpp库的对应关系,翻译为cpp源代码,然后用C编译器将cpp文件编译成相应的exe或
显示全部