如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
Matlab与VC混合编程众所周知,MATLAB是一套功能非常强大的商业数学软件,从信号处理,语音处理,数据采集,数值运算,图像处理,到电子仿真,金融分析等等,几乎在各个工业领域,他都已经得到了广泛应用,同时也取得了巨大的成功。但是,由于Matlab是用一种脚本语言,他的解释是逐行执行的,程序中所有的变量都是用MxArray来实现的,所以为了保证通用性,它的执行效率非常低,这就是我们常常看到的:在开发一些复杂的算法时,通常会发现程序执行得特别慢,虽然Mathworks公司已经在竭力提高m脚本文件(scriptfiles)的运算速度,但目前为止效果仍然不能和实现同样功能的可执行程序相比。而且m脚本文件是不能脱离Matlab这个应用程序环境,这就大大制约了程序的可移植性和通用性。本文的目的正是基于上述考虑,介绍如何利用matlab提供的C/C++编译器,将m文件编译成可执行的应用程序。编译环境是:MSVC++6.0和Matlab6.5。一、MATLAB中的操作1.没有使用图形相关的函数由于MATLAB的编译器只能对函数m文件进行编译,所以如果原来的程序是脚本程序应改写成函数形式。举例如下:建立一个m文件test1.m,内容如下:functiony=test1(n)y=1;fori=1:ny=y*i;end用如下命令对其进行编译:mcc–t–LCPP–htest1.m(如果程序由多个m文件组成,在编译命令中只需要指定主文件即可,mcc会自动查找相应的m文件进行编译)编译完成后会得到与m文件名相对应hpp和cpp文件,本例中是test1.hpp和test1.cpp。2.使用了图形相关的函数建立一个m文件test2.m,内容如下:functiontest2plot(rand(10));用如下命令编译:mcc–p–Bsglcpptest2.m(如果程序由多个文件组成,处理方法同上)编译完成后得到与m文件名相对应的hpp和cpp文件、一个主函数文件、bin目录中的两个Fig文件以及一个exe文件。我们需要的只是与m文件相对应的hpp文件、cpp文件以及bin目录中的两个fig文件,本例中是test2.hpp,test2.cpp以及bin目录中的FigureMenuBar.fig和FigureToolBar.fig。二、VC中的操作相比MATLAB中的操作,VC中需要设置众多的编译选项,显得比较复杂。另外,VC中可选的工程类型比较多,本文将说明MATLAB编译得到的源程序在如下工程类型中的使用MFCAppwizard(exe)(DialogBased)Win32ConsoleApplicationWin32Application其实在这几种类型的工程中大部分的操作都是相同的,本文先描述相同的操作,再说明不同的部分。1.用VC建立相应类型的工程,把第一步中提到的源程序拷贝到工程所在目录中。2.选择菜单Tools-Options-在属性页中选择Directories-下拉框中选择IncludeFiles,在其最后加入%MATLAB6P5%\EXTERN\INCLUDE\CPP%MATLAB6P5%\EXTERN\INCLUDE其中%MATLAB6P5%为MATLAB的安装路径,如下图所示:再在下拉框中选择LibraryFiles,在最后加入%MATLAB6P5%\EXTERN\LIB\WIN32\MICROSOFT\MSVC60%MATLAB6P5%\EXTERN\LIB\WIN32如下图所示:3.选择菜单Project-Settings-属性页Link-下拉列表中选择Input,在Object/librarymodules文本框中加入libmmfile.liblibmatlb.liblibmx.liblibmat.liblibmatpm.libsgl.liblibmwsglm.liblibmwservices.lib注意下面的IgnoreLibraries文本框,这里需要根据不同的工程类型进行填写,稍后再分情况说明。如下图所示:4.选择C/C++属性页,在下拉列表中选择Preprocessor,在Preprocessordefinitions中加入MSVC,IBMPC,MSWIND如下图所示:再在下拉框中选择PrecompliedHeaders,选中Automaticuseofprecompiledheaders,在其中填入stdafx.h,如下图:5.选择菜单Project-AddToProject-Files把所有拷贝过来的cpp文件加入到当前工程中。下面再依各种不同类型的工程具体说明1.MFCAppwizard(exe)(Di