matlab使用mex编译C++程序及复数矩阵传参

您所在的位置:网站首页 matlab中的mex函数 matlab使用mex编译C++程序及复数矩阵传参

matlab使用mex编译C++程序及复数矩阵传参

#matlab使用mex编译C++程序及复数矩阵传参| 来源: 网络整理| 查看: 265

使用的是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