【MATLAB与CUDA C混合编程(二)】mexFunction

6 篇文章 0 订阅
2 篇文章 0 订阅

mexFunction


与C中的main函数一样,MEX程序中的开始函数为mexFunction.默认变量参数是:

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])

其中
nlhs指的是在调用函数时返回值的个数;
plhs[]是每个返回值(在MATLAB中都是矩阵)的指针;
nrhs指的是调用函数时的参数个数;
prhs[]是每个参数的指针。

在函数内部调用时,常用函数用法如下:

mxIsNumeric(prhs[0]); // 判断变量是否是数字
mxIsDouble(prhs[0]);  // 判断变量是否为双精度
mxIsEmpty(prhs[0]);   // 判断变量是否为空值
mxIsComplex(prhs[0]); // 判断变量是否为复数
mexPrintf("%d", y);   // 命令行中打印数据
 
x      = mxGetN(prhs[0]);           // 获取输入参数的列数
y      = mxGetM(prhs[1]);           // 获取输入参数的行数
points = mxGetScalar(prhs[1]); // 将返回变量的实部,为双精度形数据
plhs[0]= mxCreateDoubleMatrix(1, 1, mxREAL); // 创建1×1双精度返回变量
 
x      = mxGetData(prhs[0]); // 获取变量的指针,功能相当于mxGetPr()
y      = mxGetPr(plhs[0]);   // 获取变量的指针,数据为实数
mxCreateNumericArray(3,dims,mxSINGLE_CLASS,mxREAL); // 见后

对mexFunction的参数是进行指针操作的,不能用单纯的return返回值。MEX程序传送回来的整数数据要变为双精度型数据,才能为其它函数所处理。

mxCreateNumericArray

mxCreateNumericArray(mwSize ndim,const mwSize * dims,
    mxClassID classid,mxComplexity ComplexFlag);

ndim
数组维度,即mwSize。如果 ndim小于2,则将mxCreateNumericArray 尺寸数设置为2。
dims
各维度大小。

const mwSize dims[]={y,x,z};

classid
在这里插入图片描述
ComplexFlag
mxREAL 实数 mxCOMPLEX 复数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值