zoukankan      html  css  js  c++  java
  • matlab mex入门简介

    mex 的目的

    通过C/C++语言编写代码,在Matlab中将其编译成mex文件主要可以做以下几方面的事情:

    1、加快程序的执行速度. Matlab在for上如老牛拉车的速度确实让人抓狂.

    2、将Matlab作为C++的开发调试环境.尤其是有大量数据需要处理时,用Matlab观察其中间结果十分方便.

    3、据称可以弥补Matlab硬件设备接口的薄弱环节.

    今天写了第一个使用MEX.

    一个简单的对Matlab普通数值矩阵的操作.

    其中Matlab规定的与操作系统版本有关的mwSize,mwIndex, size_t在32位系统上其实本质上就是int,所以

    一律用int代替.

    #include "mex.h"
    #include 
    void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])
    {
    
    int i,j,k;
    int index;
    double* pr=NULL;
    double* pi=NULL;
    int M,N; int ndim;
    int dims[2];
    
    for (i=0;i
    {  if ((mxIsDouble(prhs[i]))&&(mxGetNumberOfDimensions(prhs[i])==2)) 
    {  
    pr=mxGetPr(prhs[i]);  
    pi=mxGetPi(prhs[i]); 
    M=mxGetM(prhs[i]);
    N=mxGetN(prhs[i]);  
    ndim=mxGetNumberOfDimensions(prhs[i]);
    mexPrintf("变量%d:
    ",i);  
    
    for (j=0;j
    {    
    dims[0]=j;   
    for (k=0;k
    {    
    dims[1]=k;    
    index=mxCalcSingleSubscript(prhs[i],ndim,dims);   
    if (pi==NULL)    
    {      
    mexPrintf("%6.2f",pr[index]);     
    }     
    else
    {      
    mexPrintf("%6.2f+ %6.2fj",pr[index],pi[index]);    
    }    
    }   
    mexPrintf("
    ");
    }    
    }
    
    else
    {
    mexPrintf("input NUMB %d matrix is not 2 dims&double numerical array
    ",i);  }
    }
    
    }

    Result:

    >>mex test.cpp
    >> test(a,b,c)变量0: 0.35 0.62 0.83 0.20 0.47 0.59 0.25 0.35 0.55变量1: 0.92 0.38 0.53 0.57 0.29 0.57 0.78 0.47 0.76 0.08 0.93 0.01 0.75 0.05 0.13 0.34变量2: 0.16+  0.87j 0.60+  0.43j 0.45+  0.14j 0.83+  0.85j 0.11+  0.08j 0.79+  0.08j 0.26+  0.91j 0.08+  0.87j 0.54+  0.62j 0.96+  0.24j 0.31+  0.40j 0.65+  0.18j 0.23+  0.58j 1.00+  0.35j 0.00+  0.12j 0.53+  0.26j 0.69+  0.26j 0.91+  0.55j 0.08+  0.51j 0.77+  0.18j 0.17+  0.80j 0.75+  0.15j 0.15+  0.14j 0.44+  0.40j 0.82+  0.24j
    >> help test
  • 相关阅读:
    oracle 监听 添加ip
    重装系统windows
    oracle user pwd
    mybatis
    sum行列合计
    IIS8.5 运行WCF
    exp自动备份在bat中不执行
    oem 重建
    yum install oracle-validated
    MSHflexgrid控件删除选中行
  • 原文地址:https://www.cnblogs.com/arxive/p/5928957.html
Copyright © 2011-2022 走看看