文档详情

关于VC环境中调用Matlab程序的说明.pdf

发布:2017-05-24约3.37千字共3页下载文档
文本预览下载声明
关于VC 环境中调用Matlab 程序的说明 1 Matlab m 文件的编译 在VC 环境中调用Matlab 程序有多种途径,现在采用的是由Matlab 程序直接将m 文件 编译成可供C++调用的动态链接库文件,使用的Matlab 命令是: mcc -t -W lib:libfilename -T link:lib filename 其中 libfilename 是编译得到的动态链接库的文件名,filename 是 m 文件的文件名,m 文件必须是函数形式。命令执行后得到libfilename.lib、libfilename.dll、libfilename.h 文件。 Matlab 的一些内建函数并不被编译命令识别,因此需要显式的将这些函数名写入编译 命令。 2 VC++环境下调用Matlab 动态链接库 2.1 载入Matlab 动态链接库 VC 中调用Matlab 动态链接库需要将filename.lib 和filename.h 载入VC 工程中,并且需 要载入Matlab 的两个库文件:libmatlb.lib 和libmx.lib 。 载入方法可以显式的载入,也可以直接将文件加入工程: 显式的载入:首先将 Matlab 库文件的保存地址载入 VC 框架, Tools-Options-Directories ……;然后显式的将需要的库文件载入:#pragma comment (lib,“name.lib“) 。 直接加入文件:Project-Add to project-files ……。 2.2 VC++环境下调试Matlab 程序 在VC 中,所有和Matlab 的数据交互都是通过mxArray 来实现的。Matlab 编译得到 的动态链接库中,接口函数返回类型就是mxArray 型的。 在使用mxArray 类型的程序中,应包含头文件matrix.h 。但是在Matlab 编译得到的头 文件libfilename.h 中,包含了头文件libmatlab.h,该头文件又包含了matrix.h ,因此,只要 在工程中包含进libfilename.h 就可以了。 mxArray 是一种很复杂的数据结构,与Matlab 中的array 相对应,该数据结构和大量 的mx 开头的函数,广泛用于Matlab 引擎程序和Matlab C 数学库中。 2.2.1 创建和清除mxArray 型数据 数组的建立采用mxCreatexxx 形式的函数,例如新建一个double 类型数组,可用函数 mxCreateDoubleMatrix ,函数形式如下: mxArray *mxCreateDoubleMatrix(int m, int n, mxComplexity ComplexFlag); 参数m 和n 为矩阵的函数和列数。ComplexFlag 为常数,用来区分矩阵中元素是实数 还是复数,取值分别为mxREAL 和mxCOMPLEX 。 对应的,要删除一个数组用mxDestroyArray ,该函数声明如下: void mxDestroyArray(mxArray *array_ptr); 参数array_ptr 为要删除的数组指针。 创建一个字符串类型并初始化为str 字符串: mxArray *mxCreateString(const char *str); 一般的在VC 与Matlab 交互中,以上两种类型就够了。 2.2.2 管理mxArray 数组 mxArray 数组的管理指的是对mxArray 数组的维数、元素个数等进行管理。相应的命令 有: int mxGetM(const mxArray *array_ptr); //返回array_ptr 对应数组第一维的元素个数(行 数)。 int mxGetN(const mxArray *array_ptr); //返回array_ptr 对应数组其它维的元素个数,对于 矩阵来说是列
显示全部
相似文档