Matlab与VC混合MEX编程之关于mexFunction篇

转自:http://blog.sina.com.cn/s/blog_57e47bf60100031o.html

 

 

与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);    // 命令行中打印数据
 
        = mxGetN(prhs[0]);                    // 获取各输入参数的长度
        = mxGetM(prhs[1]);                    // 获取输入参数的列数
points = mxGetScalar(prhs[1]); // 将返回变量的实部,为双精度形数据
plhs[0]= mxCreateDoubleMatrix(1, 1, mxREAL); // 创建1×1双精度返回变量
 
        = mxGetData(prhs[0]); // 获取变量的指针,功能相当于mxGetPr()
        = mxGetPr(plhs[0]);    // 获取变量的指针,数据为实数
 
对mexFunction的参数是进行指针操作的,不能用单纯的return返回值。MEX程序传送回来的整数数据要变为双精度型数据,才能为其它函数所处理。
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值