Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何使用mxNumericArray_Matlab_Mex - Fatal编程技术网

Matlab 如何使用mxNumericArray

Matlab 如何使用mxNumericArray,matlab,mex,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_

我的目标是返回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\u GOOD
放入
plhs[0]

或者从mex返回
UINT32
的任何更好的方法?

您可以使用比常规的
mxCreateNumericArray
稍微简单的方法来创建容器
mxArray
,然后使用它来获取指向所分配标量的实际内存的指针并为其赋值

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]    

好啊鉴于你的“旧”代码没有编译的机会,我猜你没有或没有看到新代码的编译器错误。这不是复制粘贴我不能复制代码,我只是想知道怎么做,旧代码确实有效(回到我的matlab函数听起来不错,会去机器上试用