如何使用mxNumericArray

时间:2014-10-19 05:17:58

标签: matlab mex

我的目标是返回一个UINT32号码:

我一直在使用mexCreateDoubleScalar,我想将其更改为mxCreateNumericArray

旧代码是

const int ALL_GOOD   0;
plhs[0]=mexCreateDoubleScalar(ALL_GOOD);

我想要的新代码

const int ALL_GOOD   0;
int dim[2];
dim[0]=dim[1]=1;
plhs[0]=mxCreateNumericArray(2,dims,mxUINT32_CLASS,mxREAL);

如何将值ALL_GOOD放入plhs[0]
或者从mex返回UINT32的任何击球方式?

1 个答案:

答案 0 :(得分:1)

您可以使用比mxCreateNumericArray更简单的mxCreateNumericMatrix来创建容器mxArray,然后使用mxGetData获取指向实际内存的指针分配的标量并为其赋值。

const int ALL_GOOD = 0; // need assignment here...
plhs[0] = mxCreateNumericMatrix( 1, 1, mxUINT32_CLASS,mxREAL); // create the scalar
unsigned int* ptr = (unsigned int*)mxGetData( plhs[0] );
ptr[0] = ALL_GOOD; // assign the value to plhs[0]