目标:简要介绍MEX文件与MATLAB之间的关系
1. 什么是MEX文件?
简单的说,MEX文件是类似于Windows中dll文件的一种MATLAB可以直接调用的封装函数的文件。MEX文件可以由C/C++,FORTRAN等编程软件编写,然后经过MATLAB的编译器处理可以形成MATLAB可直接调用的二进制文件。其本质是MATLAB与封装好的函数(其他语言编写的)进行数据交换。
2. MATLAB中什么时候会用到MEX文件?
我们知道,MATLAB实际上在处理循环过程时的速度是不及C语言的;另外,你所需要的某些功能可能没有相关的m文件,但是有C语言的代码。这个时候如果我们希望提高效率(程序的效率和编程的效率),我们会接触到MEX文件。
- MEX文件可以帮助MATLAB程序更快的处理循环等其效率较低的程序部分,只需要将这部分程序功能用C语言编写成mexFunction函数,MATLAB便可以与其直接交换数据。将效率低的部分交由C语言来完成。更多关于如何编写C语言的mexFunction函数的内容,可参照:MATLAB的MEX文件编写和调试。
- 如果有现成的C语言代码,但又想在MATLAB上实现其功能,有了MEX文件就无需再次改写C语言的内容为MATLAB的程序。可以给C语言函数编写mexFunction函数,把C语言部分的内容封装起来,直接与MATLAB进行数据交换,这样能提高程序本身的运行效率,也节省大量的重写程序和无脑的改bug的时间。可参照:把C程序写成MEX文件。
3. 如何在MATLAB中调用MEX文件?
如果现在已经写好相关C语言函数了,只需MATLAB中运行mex命令便可以将mex文件编译成可以直接调用的.mexw64(windows 64位系统)文件,如:mex TEST.c
编译好的文件可以直接像调用m函数文件一样调用他们,而且实际上mexw64文件的优先级比m文件优先级更高,这意味着如果你有两个同名函数如 test.m 和 test.mexw64 ,MATLAB只会调用 test.mexw64 文件。
总结: 对于有MALTAB和C/C++混编需求的小伙伴来说,MEX文件的机制简直不要太友好(真香啊~),对于掌握了MATLAB和(一些)C语言基础的同学,也可以大胆尝试一下。毕竟如果能有效提升程序运行效率,多学点总没有错。
*如果本文有帮助到你,欢迎点赞评论鼓励作者,为知识加油!

本文简要介绍了MEX文件与MATLAB的关系。MEX文件是MATLAB可直接调用的封装函数文件,可由C/C++等编写。当MATLAB处理循环效率低或有现成C代码时会用到它。在MATLAB中运行mex命令可编译调用,能提升程序运行效率。
1413





