matlab使用mex编译C++程序及复数矩阵传参 |
您所在的位置:网站首页 › matlab中的mex函数 › matlab使用mex编译C++程序及复数矩阵传参 |
使用的是matlab2017b,之前的2014好像不支持。 首先mex -setup,它自动使用VS2017,运行的结果为: mex -setup MEX 配置为使用 'Microsoft Visual C++ 2017 (C)' 以进行 C 语言编译。 警告: MATLAB C 和 Fortran API 已更改,现可支持 包含 2^32-1 个以上元素的 MATLAB 变量。您需要 更新代码以利用新的 API。 您可以在以下网址找到更多的相关信息: http://www.mathworks.com/help/matlab/matlab_external/upgrading-mex-files-to-use-64-bit-api.html。 要选择不同的语言,请从以下选项中选择一种命令: mex -setup C++ mex -setup FORTRAN准备cpp文件。接口的结构不能动,需要include"mex.h" void mexFunction(int nlhs, mxArray * plhs[], int nrhs, const mxArray *prhs[])这个mexFunction相当于main 传入参数: 1)matlab默认的是double,所以接受时也是double。 2)有几个参数,prhs数组就有几个元素。 3)nrhs是元素的个数。 4)元素都是指针,可以是矩阵首数据的指针,也可以是单个的数据的指针。读取double数值: double Nr1=*mxGetPr(prhs[0]); double Na1=*mxGetPr(prhs[1]);读取复数矩阵: int N = mxGetN(prhs[0]);//读取矩阵大小,N是列数量,M是行数量 int M = mxGetM(prhs[0]); double * xr = mxGetPr(prhs[9]);//读取矩阵实部 double * xi = mxGetPi(prhs[9]); //读取矩阵虚部 //分配二维数组: COMPLEX **data=(COMPLEX **)malloc(sizeof(COMPLEX *)*M); for(int i=0;i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |