利用VC调用Matlab数学图形函数库

利用VC调用Matlab数学图形函数库

ID:41583835

大小:69.31 KB

页数:6页

时间:2019-08-28

利用VC调用Matlab数学图形函数库_第1页
利用VC调用Matlab数学图形函数库_第2页
利用VC调用Matlab数学图形函数库_第3页
利用VC调用Matlab数学图形函数库_第4页
利用VC调用Matlab数学图形函数库_第5页
资源描述:

《利用VC调用Matlab数学图形函数库》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、本文针对Matlab应用程序接口,详细论述了在可视化编程环境中,利用VC++调用Matlab数学图形函数库,编制可以独立运行的应用程序。经过实践证明,可以在很大程度上提高软件开发效率,增加算法的稳定程度。目前已冇一些利用混合编程开发的软件系统:如雷达特性分析、实时预测软件等,在实际中已得到了应用。引言1984年美国的Meithworks公司推出Matlab,到目前为止,它已发展成为国际上最优秀的科技应用软件其强大的科学计算与可视化功能,简单易用的开放式可扩展环境以及多达30多个面向不同领域而扩展的T•具箱(Toolbox)支持,使得Matlab在许

2、多学科领域中成为计算机辅助设计与分析、算法研究和应用开发的基木工具和首选平台。但是由于其编译器采用伪编译的方式,在Matlab中编写的程序无法脱离其工作坏境而独立运行。针对这个问题,Mathworks公司为Matlab提供了应用程序接口,允许Matlab和其它应用程序进行数据交换,并且提供了C/C++数学和图形函数库,为在其它程序设计语言调用Matlab高效算法提供了可能。C++语言是新一代的以面向对象(OOP)概念为根本的高级程序设计语言,它的面向对象的概念更加符合程序员开发软件的思维习惯,类封装性和模块化的构造非常适合软件的移植和维护,使用C+

3、+开发冇助于捉高软件工程的质量。VC++是美国微软公司利用C++的底层机理开发的新一代编译器,与其它一些C++编译器相同,都是以C++语言为编译对象。VC++在编译速度和代码优化方面,是同类产品的佼佼者,并且绝大多数的软件开发包都提供了对它的接口,这是VC++得到程序员认可的主要原因。对于理工科研究生和一些偏重于数值计算的工程技术人员,为了能够较好的在短期Z内完成一个兼具友善界而和稳定的计算内核的程序,利用软件接口技术,可以借助于笫三方的函数库。二、Matlab应用程序接口MATLAB提供的应用程序接口按目的一般來说可以分为以下三种:1.利用其它应

4、用程序的优点,例如计算速度快和使用已有算法而制定的接口;2.建立MATLAB与其它应用程序间的数据交换;3.拓广MATLAB的应用范围和应用手段。开发的相应应用程序为MEX文件、MAT文件和MATLAB引擎应用程序。其中MEX文件作为一种动态链接库文件,必须通过在MATLAB的工作环境内调用才能运行;MAT文件用于数据交换,不能利用MATLAB提供的功能来完成计算任务;MATLAB引擎应用程序是一种可以独立执行的应用程序,但在应用程序执行时,将在后台启动一个MATLAB进程,用于接收从应用程序发送来的指令并执行,然后按照要求返回计算结果。综上,基于

5、MATLAB应用程序接口开发的应用程序并不完善,这种应用程序的运行不能脱离MATLAB环境。三、VC卄调用Matlab数学和图形库6.1版木的Matlab软件包中提供了C/C++的数学和图形库,通过其编译器支持可以将Matlab中编写的叭文件转换成以C/C++代码的文件,而且可以将叭文件生成dll库,甚至我们可以直接调用其中的库函数,生成并发布不必依赖Matlab的可执行文件。通过mcc编译器生成C/C++代码,进而可以在VC或者其它编译器生成可独立执行的应用程序。下面具体讨论如何利用Matlab编译器从m文件生成C/C++代码,并嵌入用户代码,生

6、成运行吋不需Matlab支持的应用程序。设matsum.m文件,内容如下:functionsum=matbs(a,b)%sumsum=a+b用mcc命令转换为C/C++代码,命令行参数如下生成C文件mcc-t-LCmatsum.m生成C++文件mcc-t-LCppmatsum.m生成动态链接库函数mcc~t~Wlib:sum-T1ink:1ibmatsum.m注意①lib:后跟生成的库文件名不能和原m文件名相同(此处为sum),②此处只能生成C语言方式的动态链接库。该编译命令共生成9个文件,其屮sum.lib和sum.dll是可以在C/C++应用程

7、序中调用的动态链接库文件。对生成的C++文件进行分析,不难发现编译器根据in文件屮的函数,生成一个对应的C++函数:staticmwArrayMmatsum(intnargout_,mwArraya,mwArrayb);并分别根据C++和Mex文件的接口方式生成两种形衣的接口函数:externmwArraymatsum(mwArraya=mwArray::DIN,mwArrayb=mwArray::DIN);和voidmlxMatsum(intnlhs,mxArray*plhs[],intnrhs,mxArray*prhs[]);另外还有局部函数表

8、声明lo下面我们在VC++的IDE环境下进行程序设计,为了论述方便首先生成一个基于C++的简单控制台应用程序,然后在项目中

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

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

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