首页 > 代码库 > matlab mex入门简介
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:\n",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("\n");} }else{mexPrintf("input NUMB %d matrix is not 2 dims&double numerical array\n",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
matlab mex入门简介
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。