基于MATLAB与C++的混合编程

1.Matlab是当前应用最为广泛的数学软件,具有强大的数值计算、数据分析处理、系统分析、图形显示甚至符号运算等功能。利用这一完整的数学平台,用户可以快速实现十分复杂的功能,极大地提高工程分析计算的效率。但与其他高级程序相比,Matlab程序是一种解释执行程序,不用编译等预处理,程序运行速度较慢。C/C++语言是目前最为流行的高级程序设计语言之一。它可对操作系统和应用程序以及硬件进行直接操作,用C/C++语言明显优于其它解释型高级语言,一些大型应用软件如 Matlab 就是用C语言开发的。

2.mex是Matlab Executable的缩写,它是一种“可在Matlab中调用的C(或Fortran)语言衍生程序”。mex文件是由C或Fortran语言编写的源代码,经matlab编译器处理而生成的二进制文件。它是可以被matlab解释器自动装载并执行的动态链接程序,类似windows下的dll文件。

3.mex文件的使用极为方便,其调用方式与Matlab的内建函数完全相同,只需在Matlab命令提示符下键入mex文件名即可。

4.MEX文件的编写和编译需要两个基本条件:一是必须按照MATLAB要求配置接口组件和相关工具,二是要有C语言编译器Matlab本身是不带c语言的编译器的,所以要求你的机器上已经安装有c语言编译器中的一种。如果你在安装Matlab时已经设置过编译器,那么现在你应该就可以使用mex命令来编译c语言的程序了。如果当时没有选,就在Matlab里键入mex -setup,下面只要根据提示一步步设置就可以了。(如下:已经默认使用gcc作为c语言的编译器了)

基于MATLAB与C++的混合编程_第1张图片

5.简单的代码例程:

/*hello.c*/
#include "mex.h" 
void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) 
{ mexPrintf("hello,world!/n"); 
} 

(1)一个C/C++的mex源程序通常包括4个组成部分,其中前3个是必须包含的内容,第4个则根据所实现的功能灵活选用:1)#include “mex.h”;2)mex文件的入口函数mexFunction;3)mxArray;4)API函数

(2)nlhs:输出参数数目 ;plhs:指向输出参数数组的指针 ;nrhs:输入参数数目;prhs: 指向输入参数数组的指针;

(3)在matlab命令行中输入mex hello.c就可以对上述的c语言代码进行编译,生成hello.mexa64文件,可以在Matlab中直接调用;


6.常见的mex文件语法函数查看matlab下doc文档;

你可能感兴趣的:(经验帖)