zoukankan      html  css  js  c++  java
  • 关于MEX函数的说明

    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

  • 相关阅读:
    理解CSS中BFC
    js 异步执行顺序
    javascript中继承方式及优缺点(三)
    javascript中继承方式及优缺点(二)
    javascript中继承方式及优缺点(一)
    javascript中的原型和原型链(五)
    javascript中的原型和原型链(四)
    javascript中的原型和原型链(三)
    跨域问题及解决思路
    lambda表达式之方法引用
  • 原文地址:https://www.cnblogs.com/limanjihe/p/10024843.html
Copyright © 2011-2022 走看看