Matlab和外部程序的编程接口总的来说有两大类:一是关于如何在matlab中调用其他语言编写的代码;二是如何在其它语言中调用Matlab。
一、Matlab应用程序接口介绍
包含的内容有以下几个方面:
- 数据的导入与导出
- 和普通的动态链接库(dll)文件的接口
- 在matlab环境中调用C/C++等语言代码的接口
- 在C/C++中调用matlab引擎
- 在matlab中调用java
- 在matlab中使用网络服务
- 和串行口的通信接口
Matlab接口技术的优点:
- 代码重用
- 合理利用开发组资源
- 方便发布
- 提高程序运行效率
二、Matlab调用C/C++
2.1 MATLAB MEX文件
MEX文件是一种特殊的动态连接库函数,能够在MATLAB中像一般的M函数那样执行。注:MEX文件必须包含一个特殊的函数,以作为在MATLAB中使用的接口。
在各种操作系统平台上,MATLAB可以自动检测到MEX文件的存在。MEX文件只需要在MATLAB的搜索路径上,并在MATLAB命令行键入某个MEX文件的文件名,就可以执行相应的MEX文件。
MEX文件是通过编译相应的C/C++源程序而产生的,所以用户必须自己安装并选用其他的编译器。
配置编译步骤:
mex -setup C++
mex filenames
2.2 C/C++MEX文件的使用
C/C++MEX源程序的组成:
- #include"mex.h"
- MEX文件的入口函数mexFunction
- mxArray
- API函数
**例如:**创建一个demo,在命令行中输出“Hello,MEX!”语句。
hellomex.c
#include "mex.h"
void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
{
mexPrintf("hello,MEX!\n");
}
将上述的hellomex.c文件保存在MATLAB当前目录下,用以下命令进行编译
>> mex -v hellomex.c
通过编译后就可以在MTALAB当前目录下产生hellomex.mexw64文件,这也就是操作系统中编译好的MEX文件。在MTALAB中输入hellomex,就可以执行相应的MEX文件。
>> hellomex
hello,MEX!