reference:http://www.mathworks.com/help/matlab/ref/mex.html

.MEX文件是一种可在matlab环境中调用的C(或fortran)语言衍生程序,MEX文件的后缀名按32位/64位分别为 .mexw32/.mexw64。MEX文件是由C或Fortran语言编写的源代码,经matlab编译器处理而生成的二进制文件。它是可以被matlab解释器自动装载并执行的动态链接程序,类似windows下的dll文件。
MEX文件实现了一种其它语言与MATLAB的接口,通过MEX文件可以在MATLAB中像调用内嵌函数一样调用使用C语言Fortran等语言编写的函数,实现了代码重用,同时也能提高MATLAB环境中数据处理的效率
 

MEX文件是一种计算机文件,它提供MATLAB或Octave之间的接口以及用C,C ++或Fortran编写的函数。 它代表“MATLAB可执行文件”。

编译时,MEX文件是动态加载的,允许从MATLAB或Octave中调用外部函数,就像它们是内置函数一样。

为了支持MEX文件的开发,MATLAB和Octave都提供了外部接口功能,便于在MEX文件和工作区之间传输数据。 除了MEX文件之外,Octave还有自己的格式,使用自己的原生API,性能更好。

#include "mex.h"
void timestwo_alt(double *y, double x)
{
*y = 2.0*x;
} void mexFunction ( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] )
{
double *M;
int m,n; //指针指向第一个参数的数据地址
M = mxGetPr(prhs[0]);
m = mxGetM(prhs[0]);
n = mxGetN(prhs[0]); plhs[0] = mxCreateDoubleMatrix(m,n, mxINT32_CLASS,mxREAL); //生成m x n 的实矩阵,分配内存空间
double *A;
A = mxGetPr(plhs[0]); timestwo_alt(A,*M); //调用并直接赋值到指针指向的输出变量
}

 

编译链接C语言的MEX文件源程序,在MATLAB的控制窗口中输入:mex timestwoalt.c生成一个名为timestwoalt.mexw32的MEX文件;

运行:在MATLAB的控制窗口中输入
timestwoalt(10)
结果为
ans =
20.0000 + 0.0000i
MEX文件的编写和编译需要两个基本条件:一是必须按照MATLAB要求配置接口组件和相关工具,二是要有C语言或Fortran语言的编译器

在Windows下,使用MinGW-W64 Compiler对*.C进行编译。


说明:https://jingyan.baidu.com/album/656db918c1d832e381249c3e.html?picindex=1

下载:https://osdn.net/projects/mingw/downloads/68260/mingw-get-setup.exe/

对比:MinGW vs. CygWin    https://www.cnblogs.com/findumars/p/8290405.html

关于MEX函数的说明的更多相关文章

  1. Mex函数与C++数据矩阵交互方法

    #include "mex.h" #include <iostream> #include <windows.h> #include "math. ...

  2. BZOJ 3339 Rmq Problem(离线+线段树+mex函数)

    题意: q次询问,问[l,r]子区间的mex值 思路: 对子区间[l,r],当l固定的时候,[l,r]的mex值对r单调不减 对询问按照l离线,对当前的l,都有维护一个线段树,每个叶节点保存[l,r] ...

  3. MEX程序中的mexFunction函数【转】

    与C中的main函数一样,MEX程序中的开始函数为mexFunction.默认变量参数是: void mexFunction(int nlhs, mxArray *plhs[], int nrhs, ...

  4. Mex文件在VS2010中调试方法

    http://www.cnblogs.com/lukylu/p/4042306.html matlab里面无法单步调试mex函数,故需转到VS上面调试,这里采用VS2010. 参考网上很多人写的方法但 ...

  5. MATLAB中mexFunction函数的接口规范(转载)

    MEX文件的调用极为方便,其调用方式与MATALAB的内建函数完全相同,只需要在命令窗口内输入对应的文件名称即可. C语言MEX程序代码文件有计算子例程(Computational routine)和 ...

  6. Matlab与C/C++联合编程之Matlab以MEX方式调用C代码(五)完整过程加示

    如下为本人亲证代码: 一: 编译器的安装与配置(环境不同,显示结果不同) 要使用MATLAB编译器,用户计算机上应用事先安装与MATLAB适配的以下任何一种ANSI C/C++编译器: 5.0.6.0 ...

  7. Matlab与C/C++联合编程之Matlab以MEX方式调用C/C++代码(四)

    利用Matlab与VC++联合编程,既可在C语言程序中打开Matlab引擎,调用Matlab的ToolBox函数和作图函数,也可在Matlab中调用C代码生成的动态链接库文件,用以加快执行速度.缩短开 ...

  8. Matlab与C/C++联合编程之Matlab以MEX方式调用C/C++代码(一)

    MEX文件是一种可在matlab环境中调用的C语言(或fortran)衍生程序,mex的编译结果实际上就是一个带输出函数mexFunction 的dll文件. 中文名 mex文件 外文名 MATLAB ...

  9. MEX文件编写和调试

    作者kaien,2010/02/16 以前我写过一篇文章,详细的介绍过MEX的格式,语法,编译,调试等.可惜记不清放在哪里了.而最近又用到MEX编程,所以只能重新温习一番.时间有限,只记下简要流程和注 ...

随机推荐

  1. GROUP by 方法  C#

    1.用两层循环计算,前提条件是数据已经按分组的列排好序的. DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[] { ...

  2. VPC配置介绍

    VPC(Virtual Port-Channel)是Cisco Nexus系列交换机中的一个特性.它支持一个跨机箱的二层Port-Channel.对于第三方设备来说(交换机或服务器)物理上是连接到了两 ...

  3. 20171026python读取txt写入csv

    import csv def get_lines(filepath): with open(filepath) as file_object: lines=set(file_object.readli ...

  4. vue,vux判断字符串是否是undefined

    if (typeof thisObj.city === 'undefined') { return}

  5. P4426 [HNOI/AHOI2018]毒瘤

    挺不错的一个题. 题意即为求一个图的独立集方案数. 如果原图是一棵树,可以直接大力f[x][0/1]来dp. 由于非树边很少,考虑2^11容斥,强制某些点必选,然后再O(n)dp,这样应该过不了. 发 ...

  6. python记录_day18 反射 判断函数与方法

    一.三个内置函数 1.issubclass(a, b)  判断a类是否是b类的子类 class Foo: pass class Zi(Foo): pass class Sun(Zi): pass pr ...

  7. array_column的作用

    从记录集中取出 last_name 列,用相应的 "id" 列作为键值: <?php // 表示由数据库返回的可能记录集的数组 $a = array( array( 'id' ...

  8. 廖雪峰网站:学习python函数—递归函数(四)

    # 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数 # 计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示,可以看出: # fact ...

  9. yum源仓库搭建

    系统:centos7 一.安装nginx yum install -y nginx yum  install -y createrepo   安装建yum源仓库的工具,可以用来建立yum仓库yum  ...

  10. MVC实战之排球计分(四)—— View设计与实现

    (view)视图 视图是用户看到并与之交互的界面.对老式的Web应用程序来说,视图就是由HTML元素组成的界面,在新式的Web应用程序中,HTML依旧在视图中扮演着重要的角色,但一些新的技术已层出不穷 ...