基于VC与MATLAB混合编程的研究.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:4 大小:235KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

基于VC与MATLAB混合编程的研究.pdf

基于VC与MATLAB混合编程的研究.pdf

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

四川工业学院学报JournalofSichuanUniversityofScienceandTechnology文章编号:100025722(2002)0120013204基于VC与MATLAB混合编程的研究111斌2李自胜,向中凡,朱莹,秦贝(11四川工业学院机械工程与自动化系,四川成都610039;21中原油由分公司炼油化工总厂,河南濮阳457165)摘要:MATLAB是功能强大的工程计算和数据分析软件,VC是面向对象的快速开发工具。二者结合,可以开发出具有友好界面、满足工程领域应用的软件。本文作者探讨了四种编程的方法,比较了它们的优缺点,并以实例说明。关键词:VC;MATLAB;混合编程中图分类号:TP314;TP31714文献标识码:A0引言MEX文件可使现有的C/C6源程序无须改写为M文件格式而在MATLAB中运行,提高了编程效率。MATLAB是集科学计算、图形图像处理于一体MATLAB提供了专门的编译MEX文件的工具的软件系统,具有简洁、强大的数值计算和仿真能力等MEX,其使用格式为:优点[3]。近年来,MATLAB已广泛用于工程领域,具〈〉〈〉可直接编译源程序。有极好的可读性和可移植性。但存在交互性差、不能MEXoptionsfiles,C6编译后可在MATLAB命令行方式下键入文件名或函独立于MATLAB的运行环境等缺点。数名即可运行。其实现步骤如下:VC是一种面向对象的可视化编程语言,广泛用(1)在VCIDE中编制C/C6源程序;于图形与图像、网络与通信以及控制等领域。具有稳(2)定义入口点函数mexFunction,每个C/C6源程定和运行速度快的优点,能用于底层直至面向用户的序必须有这一函数。mexFunction不是一个供用户调软件的快速开发。但缺乏对大量数据处理与分析、数用的例程,其原型如下:据可视化方面的能力。voidmexFunction(intnlhs,mxArray3plhs[],VC利用MATLAB提供的应用程序编程接口intnrhs,constmxArray3prhs[]);其中nlhs和nrhs(API)进行编程,二者取长补短,可以开发出具有良好分别为输出和输入参数个数,plhs和prhs分别为输出的用户界面、强大的数据处理能力的应用软件。目前和输入mxArray的地址。mxArray是MATLAB与有关于这方面的研究报道,但不全面或者使用工具不C语言进行数据交换的专门的数据类型。同,如文献[4]就(++Builder与MATLAB混合编程(3)编译,本例为mexreverse1c。编译后将产生相应的三种方法进行了研究。由于VL与C++Builder的动态链接库文件,本例为reverse1dll。在编译环境配置等诸多方面存在差异,以及In文件在(4)运行,在MATLAB命令行下键入混合编程中具有极大的灵活性。文章讨论VC和x=’MATLAB’;reverse(x)MATLAB混合编程的四种方法。x=1混合编程的实现BALTAM111MEX文件实现∥reverse1cMEX文件作为MATLAB的内建(built-in)函#include“mex1h”数,是供MATLAB用来调用的C/C6语言程序。voidconvert(char3input-buf,intbuflen,char3收到日期:2001204224作者简介:李自胜(19762),男,重庆市铜梁县人,四川工业学院机械工程与自动化系,硕士,主要从事计算机图形学方面的学习和研究。41四川工业学院学报2002年output-buf)11211生成lib库文件供VC调用{∥反转字符串的顺序在〈MATLAB〉\extern\include目录下,包含了inti;用于开发C6程序的C语言头文件。文件lib31deffor(i=0;i<buflen-1;i6)用于VC编译器,-lib31def用于Borland编译器,包3(output-buf+i)=3(input-buf+bu2好了从不同动态链接库(DLLs)的导出函数。见表1flen2i22);}所示。voidmexFunction(intnlhs,mxArray3plhs[],表1〈MATLAB〉\extern\include目录下31defintnrhs,constmxArray3prhs[])Libmat1def包含从MAT文件DLL(libmat1dll)导出的函数libmat1def名{char3input-buf,3output-buf;Libmatlb1def包含从MATLAB内建数学库DLLintbuflen,