预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

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

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

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

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

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

2010年第9期NO.9.2010 (总第144期)ChinaHi-TechEnterprises(CumulativetyNO.144) VC++与MATLAB混合编程的实现方法 姜浩智,廖宁华 ((江西路通科技有限公司,江西南昌330002) 摘要:在科学研究和工程应用中,科研工作人员往往需要首先提出一种新算法;然后在相应的仿真工具里面进行仿 真验证,如果仿真验证错误,则应该重新对算法进行修正,并再次进行仿真验证,直到仿真验证通过,此时可以确 保算法在理论原理上的正确性。文章介绍了采用VisualC++与MATLAB进行混合编程的重要特点和意义,重点阐述 了三种不同的VisualC++与MATLAB混合编程的方法,并对这三种方法做了全面的分析比较和总结。 关键词:VC++;MATLAB;MATCOM;混合编程;编译器 中图分类号:TP311文献标识码:A文章编号:1009-2374(2010)09-0013-04 一、VC++与MATLAB混合编程的实现方法概述法在C/C++环境下实现。可见,为了提高研发效率有必要使用 MATLAB和C/C++混合编程。不过这里就存在重复编码的问 在科学研究和工程应用中,科研工作人员往往需要首先提 题。也就是说,同样的算法要在MATLAB和C/C++环境下各写 出一种新算法;然后在相应的仿真工具里面进行仿真验证,如 一次代码,增加了不必要的工作。因此这样就很自然的提出了 果仿真验证错误,则应该重新对算法进行修正,并再次进行 一个关于如何把现有的已经通过仿真验证的m文件自动转换为 仿真验证,直到仿真验证通过,此时可以确保算法在理论原理 符合工程实践要求的C/C++文件的问题。下面将介绍三种不同 上的正确性,但是其实际性能还有待进一步验证;接下来在相 的方法: 应的实际工程开发环境下实现算法,测试算法的各项性能指标 是否符合技术指标要求,若不满足,则应当改进算法,并再次二、采用MATLAB自带编译器mcc 投入到前面的仿真验证阶段,直至算法的各项性能指标满足要从MATLAB51版本开始,MathWorks公司推出了一系列的 求,或在某种前提条件及评价标准下算法总体性能指标最优。MATLAB自带编译器来解决MATLAB与C/C++的接口问题。编 上述的整个过程如图1所示:译器mcc可以将MATLAB的C/C++数学库编译为VC++编译器能 识别的代码嵌入VC++环境。mcc是一种调用MATLAB编译器的 命令,它既可以在MATLAB命令行方式下使用,也可以在DOS或 者是UNIX命令行方式下使用。值得注意的一点是,由于mcc编 译器本身无法编译脚本文件,因此,需要将脚本文件改写成函 数文件,也就是说在原始脚本文件的前端,加一行使用关键字 function定义的函数即可。 在使用mcc命令实现MATLAB中的m函数文件自动转化为 C/C++文件时,首先将要调用的函数在MATLAB中写成m文件, 然后使用mcc命令将m文件编译成可以在VC++中调用的cpp文 在仿真验证阶段,目前的主要仿真工具普遍采用件,最后在VC++程序中调用执行。也可以用mcc编译器将m文件 MATLAB。MATLAB是MathWorks公司推出的数学软件,它将编译成为stand-alone程序。 数值分析,矩阵计算,信号处理和图形显示结合在一起,包含mcc编译器把m文件转换成相应的C/C++文件时提供了不 大量高度集成的函数可供调用,命令语句功能十分强大,为科同种类命令参数以便控制输出不同的文件。 学研究、工程设计及众多学科领域提供了一种简洁,高效的编-x可以把m文件转换为C文件并且创建相应的能直接在 程工具。然而MATLAB并非标准的编译链接语言,而是一种解MATLIB中调用的CMEX-file文件。 释性语言,这就大大限制了其代码的执行速度,并且源代码的-S可以把m文件转换为C文件并且创建相应的使用动态大 公开不利于算法和数据的保密,局限于MATLAB运行环境,不小输入输出的SimulinkS-function。 能用于开发商用软件。与此相反,C/C++环境下通过编译链接-m可以把m文件转换为C文件并且创建独立于MATLAB环 后的目标代码质量高,程序执行效率高,还具有良好的不同平境运行的独立可执行文件。 台可移植性,所以工程开发时常常需要将已经验证通过的算-p可以把m文件转换为C++文件并且创建独立于MATLAB 13 环境运行的独立可执行文件。为C/C++文件。在MATCOM的DEBUG目录下可以找到生成的h, -Bsgl可以把包含调用绘图函数的m文件转换为C文件并且cpp,exe等文件。然后添加需要的C/C++文件到MSVC工程中,再 创建独立于MATLAB环境运行的独立可执行文件(需要独立图包含头文件就