用MATLAB和Visual C++混合编程及应用.pdf
《用MATLAB和Visual C++混合编程及应用.pdf》由会员分享,可在线阅读,更多相关《用MATLAB和Visual C++混合编程及应用.pdf(5页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、文章编号:1672-0792(2003)01-0059-03工程应用用 MATLAB 和 Visual C+混合编程及应用庞承宗,李宝树,王晓云(华北电力大学 电力系,河北 保定 071003)Hybrid MATLAB and Visual C+Programand Its ApplicationPANG Cheng-zong,LI Bao-shu,WANG Xiao-yun(North China Eiectric Power University,Baoding 071003,China)收稿日期:2002-10-28Abstract:The principies and the hyb
2、rid programming method ofMATLAB and VC+through MATLAB API and MATLABcompiiers are introduced.With an exampie of caiiing the powerspectrum density function in the MATLAB tooibox,the hybridprogram method is iiiustrated utiiizing the MATLAB enginestechnigue.It shows that compiying the program by the wa
3、y ofstatic inter-iinkage can be enabied.Key words:MATLAB;VC+mix-ianguage program;engine;compiier摘要:论述了通过 MATLAB 应用程序接口(API)和 MAT-LAB 编译器实现和 VC 混合编程的原理与方法。以 MATLAB工具箱中的功率谱密度函数的调用为例,分析说明了利用MATLAB 引擎技术与 VC 互连,实现复杂程序的编译,并介绍了以静态链接库的方式编译程序,保证了程序的通用性。关键词:MATALB;VC+混合编程;引擎;编译器中图分类号:TP311文献标识码:AMATLAB 是美国 Ma
4、thWorks 公司自 20 世纪 80年代中期推出的数学软件,具有强大的数值计算功能。它以矩阵计算为基础,可以实现工程计算、算法研究、建模和仿真等多种功能,已经成为世界上应用最为广泛的工程计算软件。Visuai C+是美国 Microsoft 公司推出的可视化C+编程环境,VC+6.0 是目前功能最强大、最复杂的软件开发工具之一,具有许多先进特性,被广泛应用于 Windows32 位平台的基础应用程序开发。VC 可以很容易实现菜单、工具条等,具有强大的图形界面编程能力,而且最后可以生成脱离 VC环境而独立运行的应用程序。然而当使用它来完成如小波分析、信号处理、绘制图形等功能,就需要用户自己去
5、编写函数,非常繁琐,很不方便。而MATLAB 虽然具有强大的工程计算功能和丰富的工具包,但界面编写功能简单,不能满足一些用户的要求,而且它不能脱离其编程环境运行。因此,可以采用 MATLAB 和 Visuai C+混合编程,各取所长,实现功能互补。1MATLAB 编译器和 VC 互连编程MATLAB 编译器是 MATLAB 系统扩展的重要组成部分,用户可以利用此编译器把 MATLAB 的 M文件转化成 C 或 C+语言的源代码。5.3 版之后的MATLAB 含有的编译器为 2.0 版本,其主要功能有1:a.产生可构造 MEX 文件的 C 语言源代码;b.产生 C 或 C+源代码,这些源代码与其
6、他模块相结合,可以形成独立的外部应用程序,该程序可以脱离 MATLAB 运行环境,但需要 MATLAB C 或 C+数学函数库的支持;c.产生和 Simuiink 配合使用的 CMEX 的 S 函数,可以提高 S 函数的运行速度。其中可以利用前 2 种类型实现和 VC 互连。在使用 MATLAB 编译器之前,需要对其进行两方面的设置。首先,根据外部编译器的类型、软件位置对 M 编译器进行设置。方法是,在 MATLAB 命令窗中运行mex-setup,然后根据屏幕提示选择合适的 C 或 C+编译器,并完成配置。当外部编译器类型、版本或路95N 12003电力科学与工程ELECTRIC POWER
7、 SCIENCE AND ENGINEERING径发生变化,可随时根据需要再次进行配置。然后,为产生独立外部应用程序进行预配置,并对 MATLAB C 数学函数库进行选择。同样,在MATLAB 命令窗中运行 mbuild-setup,根据屏幕提示进行配置。该配置也可以随时根据需要修改。在配置完 MATLAB 编译器之后,就可以利用该编译器实现和 VC 互连了,方法有以下 2 种。(l)MEX 文件MEX 文件是 MATLAB 系统的外部程序调用接口,是用 C 语言或 Fortran 语言编写,通过 MAT-LAB 的应用程序接口(API)函数库对其进行编译,生成一种动态链接函数,可以被 MAT
8、LAB 根据调用命令自动装入和执行。MATLAB 编译器可以把 M文件编译成 C 的 MEX 文件源代码,用于生成 MEX文件。MEX 文件在不同平台上有不同形式,在Windows 平台下表现为.dll 文件。因此,转换后的MEX 文件既可在 MATLAB 环境下运行,也可脱离MATLAB 环境以.dll 文件形式被其他程序调用。通过这一途径可以实现 VC 与 MATLAB 混合编程。(2)可独立运行的程序用 MATLAB 编译器 mcc 命令,选择合适的参数选项(各参数功能如表 l 所示)2,就可以把输入的M 文件转换成需要的 C 共享库或 C/C+的源代码,再经过 C/C+编译器,生成独立
9、的应用程序。表 l编译器 2.0 参数选项功能一览表参数选项功能描述-x将 M 文件编译链接为 C 的 MEX 文件-m将 M 文件转换为 C 源代码并编译链接为独立的可执行文件-p将 M 文件转换为 C+源代码并编译链接为独立的可执行文件-S(大写)将 M 源代码的 S 函数文件编译链接为 C MEX 形式的 S 函数。以上程序如果在 VC 环境下编译通过,还需要几个库文件 linbmmfile.dll,libmatlb.dll,libmcc.dll,libmx.dll 的支持,建议采用静态链接的方法实现。2用 MATLAB 引擎与 VC 互连如果用 C/C+语言实现矩阵计算、求逆、奇异值分
10、解或进行快速傅里叶变换(FFT),是很复杂的,而 MATLAB 的基本数据单位就是矩阵和向量,并且具有功能强大的库函数,调用 MATLAB 实现相应功能很简单。这样,用 VC 作前台界面,MAT-LAB 作后台分析计算,就可以扩大编程的灵活性,缩短软件开发时间。MATLAB 自身提供了 API(应用程序接口)来实现与其他程序的通信,该 API 支持的功能主要有2:a.在 MATLAB 程序中调用已有的 C 或 For-tran 语言程序;b.在不同应用程序之间传递数据;c.建立 MATLAB 程序与其他程序的主从关系;d.在 C 或 Fortran 程序内调用 MATLAB 函数。MAT-LA
11、B API 的引擎(Engine)技术,采用客户机/服务器(Client/Server)的计算模式,允许用户在网上不同机器或在同一台机器上调用 MALTAB,而只需要与容量很小的引擎通信库链接。在 Windows 平台下,这一过程通过 ActiveX 通道实现与 MATLAB 通信,这种方法不要求链接整个 MATLAB,只需要载入MATLAB 引擎库,节省了大量的系统资源。MAT-LAB 引擎库中提供的主要 C 语言调用函数见表 22。表 2支持 C 语言程序的 MATLAB 引擎函数函数名功能Eng0pen打开 MATLAB 引擎EngClose关闭 MATLAB 引擎EngPutArray
12、将数据送入 MATLAB 引擎EngGetArray从 MATLAB 引擎中取出数据EngEvalString在 MATLAB 引擎中执行输入的 MAT-LAB 命令Eng0utputBuffer产生一个缓冲区以保存 MATLAB 的输出3VC 和 MATLAB 混合编程举例本例程序应用 MATLAB 引擎技术实现与 VC 的混合编程。软件编制环境为pwin98 第二版,VC+6.0,MATLAB5.3,VC 与 MATLAB 均安装在 E盘。(l)生成静态库文件在利用 MATLAB 引擎实现 VC 和 MATLAB 混合编程时,为了保证程序的通用性,应该采用静态链接库的形式。而 2 个必需的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 用MATLAB和Visual C+混合编程及应用 MATLAB Visual C+ 混合 编程 应用
限制150内