用MATLAB和Visual C++混合编程及应用.pdf

上传人:qwe****56 文档编号:70023422 上传时间:2023-01-14 格式:PDF 页数:5 大小:167.37KB
返回 下载 相关 举报
用MATLAB和Visual C++混合编程及应用.pdf_第1页
第1页 / 共5页
用MATLAB和Visual C++混合编程及应用.pdf_第2页
第2页 / 共5页
点击查看更多>>
资源描述

《用MATLAB和Visual C++混合编程及应用.pdf》由会员分享,可在线阅读,更多相关《用MATLAB和Visual C++混合编程及应用.pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

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 个必需的

13、 MATLAB 库文件libeng.lib 和 libmx.lib 在 MATLAB 目录中没有,只有相关的动态链接库文件 libeng.dll 和 libmx.dll,所以需要用这 2 个动态链接库生成我们所需要的库文件。可以利用 VC 自带的命令行编译工具 lib.exe 来06电力科学与工程2003实现3,除此之外还需要 link.exe 和一个动态链接库 mspdb60.dll,这 3 个文件所在的目录分别为 Mi-crosoft Visual Studio Vc98 bin 和 Microsoft Vi-sual Studio Msdev98 bin 。将以上 3 个文件拷贝到 MA

14、TLAB 的安装目录下:Matlab extern include ,然后进入 DOS 环境,使 Matlab extern include 为当前目录,运行lib.exe 形成所需要的静态库文件:lib/def:libeng.def/machine:ix86/out:libeng.liblib/def:libmx.def/machine:ix86/out:libmx.lib最后生成了所需的 2 个静态链接库文件。把这 2个库文件加入到 VC 的工程设置 ob ect/library mod-ules 中。(2)编写程序首先建立一个 VC 的基于对话框的应用程序 fft,然后添加一个按钮控件,

15、ID 改为 IDC-NOISESIN-PER,为这个按钮控件添加 BN-CLICKED 鼠标单击消息处理函数 OnNoisesinper()。部分程序代码如下。#include stdafx.h#include fft.h#include fftDlg.h/包含引擎头文件路径#includee:matlab extern include engine.hvoid CfftDlg:OnNoisesinper()int i;Engine!ep;/定义一个引擎指针mxArray!T=NULL;mxArray!SIN=NULL,!Y=NULL;double Time 301;for(i=0;i opt

16、ion-directories,分别把 MATLAB安装目录里的 include 文件和 lib 文件的路径添加到VC 路径中。在本程序中,路径为e:matlab ex-tern include 和 e:matlab extern lib。编译链接程序并运行,该程序在 VC 的环境下,按照 MATLAB 格式画出了一条添加噪声后的正弦曲线和功率谱曲线,实现了 VC 和 MATLAB 的混合编程。4结论(1)本文程序用VC编写前面板,通过引擎技(下转 65 页)16N 1电力科学与工程参考文献:1布罗章斯基 B M.火用方法及其应用M.北京:中国电力出版社,1996.2项新耀.工程火用分析方法M

17、.北京:石油工业出版社,1990.3朱明善.能量系统的火用分析M.北京:清华大学出版社,1988.4王加璇.火用方法及其在火电厂中的应用M.北京:水利水电出版社,1993.5王军,张定才,周光辉.实际制冷循环的火用分析J.郑州纺织工学院学报,2000,11(3):53-55.6姚立为.制冷与热泵系统的火用分析J.应用能源技术,2000,(2):1-3.7朱培根,虞维平,张晓松.热泵空调器节能火用分析及优化J.低温工程,2000,(5):54-59.8张永贵,胡亚范.热泵定义及火用效率及计算方法探讨J.节能与环保,2001,(2):16-18.9宋淑英.电厂热力循环的火用分析J.天津电力技术,1

18、997,(4):1-6.10张洪波,王静.火用分析在小型热电站热电联产中的应用J.上海节能,2001,(5):42-45.11周旭康.小型热电站热电联产火用分析及节能评价J.节能,2000,(10):20-23.12徐绍红,杨秀琴,苗郁.在化工企业节能设计中应使用火用分析法J.平原大学学报,2000,17(2):22-22.13祝立萍,龚义书.高炉能量平衡与火用平衡分析J.节能,1999,(7):5-8.14王清照,程伟良,王加璇.火用在生态建模中的作用J.现代电力,1997,14(1):20-25.15项新耀.火用传递方程及火用传递分析J.大庆石油学院学报,1998,22(2):7-11.1

19、6王松平,陈清林,尹清华,等.火用传递规律J.华南理工大学学报,1998,26(6):30-36.17王松平,陈清林,尹清华,等.火用传递和转换规律的探讨J.华南理工大学学报,1998,26(9):27-32.18王松平.热火用传递的基本规律J.广西师范大学学报,1998,16(1):82-86.19项新耀.火用传递方程及火用传递分析J.油田节能,1999,(1):7-11.20吴志刚,魏琪,翁锦萍.IGCC 系统的火用分析J.江苏理工大学学报,2000,21(2):33-38.21刘泽龙,金红光,林汝谋.整体煤气化联合循环火用(IGCC)损分布结构研究J.工程热物理学报,2000,21(6)

20、:676-679.22赵旭,田贵山,徐廷相.整体煤气化燃气蒸汽联合循环的火用分析方法J.西安交通大学学报,1999,33(3):76-80.23王永青,陈安斌,闻雪友.HAT 循环的能量模型和火用分析J.热力发电,1999,(3):31-34,36.24赵军,郑宗和,朱强.火用分析的发展与应用J.新能源,2000,22(1):39-43.25郑宏飞,吴欲远.火用分析方法论J.西安交通大学学报,2001,56(21):75-80.26程伟良,王加璇.热经济学的辉煌发展J.热能动力工程,1999,14(2):79-82.作者简介:甄志(1978-),女,天津人,华北电力大学硕士生,从事热力设备及系

21、统的仿真与自动化技术方面的研究;崔晓钢(1979-)男,山东烟台人,华北电力大学硕士生,从事热力设备及系统的仿真与自动化技术方面的研究;陈鸿伟(1965-)男,重庆人,华北电力大学动力系教授,从事煤燃烧及热力系统节能方面的!研究。(上接 61 页)术调用 MATLAB 信号产生函数和功率谱分析函数,非常简便地实现了信号的功率谱分析。(2)使用静态链接库方式编译程序,比使用动态链接库方式更能够保证程序的通用性。(3)利用引擎技术实现 VC 和 MATLAB 的混合编程,可以缩短软件开发周期,提高软件编程效率,但程序运行的实时性较差,且不能完全脱离 MAT-LAB 环境运行。参考文献:1刘质俭.M

22、ATLAB 应用程序接口用户指南 M.北京:科学出版社,2000.2张志涌.精通 MATLAB M.北京:北京航空航天大学出版社,2000.3石波,陈淑珍,沈海鸥.VC 与 MATLAB 接口方法的剖析 J.计算机工程,2000,26(3):98-100.作者简介:庞承宗(1978-),男,河北保定人,华北电力大学硕士生,从事现代电磁测量技术方面的研究;李宝树(1955-),男,河北衡水人,华北电力大学教授,从事现代电磁测量、微机检测等方面的研究。56N 1电力科学与工程用MATLAB和Visual C+混合编程及应用用MATLAB和Visual C+混合编程及应用作者:庞承宗,李宝树,王晓云

23、作者单位:华北电力大学,电力系,河北,保定,071003刊名:电力科学与工程英文刊名:INFORMATION ON ELECTRIC POWER年,卷(期):2003(1)被引用次数:11次 参考文献(3条)参考文献(3条)1.石波;陈淑珍;沈海鸥 VC与 Matlab 接口方法的剖析期刊论文-计算机工程 2000(03)2.张志涌 精通MATLAB 20003.刘质俭 MATLAB应用程序接口用户指南 2000 引证文献(11条)引证文献(11条)1.王坤 Visual C+调用Matlab神经网络工具箱的一种实现方法期刊论文-中国科技信息 2008(15)2.郭建龙.陈世元 一种新型基于M

24、atlab/pdetool的有限元前处理程序开发方法期刊论文-微电机 2007(11)3.关宏伟.钟伟红.吴飞青.李英道.孙荣春 滚动H控制在三容实验系统中的应用研究期刊论文-安徽电子信息职业技术学院学报 2007(1)4.于红博.于红霞.杨劼.查书平.陈钟荣 基于VC+和Matlab的双基地多普勒天气雷达反演风场系统设计期刊论文-计算机应用与软件 2006(2)5.孙荣春.关宏伟.徐抒岩 滚动H控制方法在非对称约束系统中的改进算法期刊论文-光学精密工程 2005(z1)6.黄素媚.王巧巧 Matlab与VC+结合使用浅析期刊论文-大众科技 2005(11)7.莫江涛.王静文 基于MATLAB与Visual C+实现主应力的编程求解期刊论文-湖南工程学院学报(自然科学版)2005(3)8.祖向荣.徐燕.王素琴 电力市场发电公司竞价策略仿真模型期刊论文-华北电力大学学报 2005(1)9.燕东升 智能液位控制系统可视化仿真平台的研制学位论文硕士 200510.秦振汉 神经网络专家系统在卫星故障诊断中的应用研究学位论文硕士 200511.孙荣春 基于LMI的滚动时域H控制在三容实验系统中的应用研究学位论文硕士 2004 本文链接:http:/

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁