我将MATLAB中uint8类型的整数数组传递给MEX函数。我如何阅读这些值?我试过使用:如何读取MEX函数中的整数数组
int *n;
n = (int *) mxGetData(prhs[0]);
但值出来的垃圾。我也试过
double *n;
n= mxGetPr(prhs[0]);
并且在这种情况下也出现垃圾值。
这是什么解决方案?
基本上我想读取MEX函数中的整数值,但mxGetPr
返回double类型。
我将MATLAB中uint8类型的整数数组传递给MEX函数。我如何阅读这些值?我试过使用:如何读取MEX函数中的整数数组
int *n;
n = (int *) mxGetData(prhs[0]);
但值出来的垃圾。我也试过
double *n;
n= mxGetPr(prhs[0]);
并且在这种情况下也出现垃圾值。
这是什么解决方案?
基本上我想读取MEX函数中的整数值,但mxGetPr
返回double类型。
您应该确保读取的字节数和这些字节的解释在输入数据(来自Matlab)和输出数组(在mex中读入的数组)相同功能)。由于uint8
的长度是8位,因此double
和int
都将读取错误的字节数,并误解了这些字节。
尝试包括stdint.h
标头,并使用uint8_t
数据类型作为读入的数组。
使用
edit([matlabroot '/extern/examples/mex/explore.c']);
在那里看一看演示MEX-功能explore.c,您可以在MATLAB打开,你会发现一堆名字都开始analyze_
,然后一个功能类型(例如,analyze_uint8
)。在这些功能你会看到来电的输出mxGetData
被强制转换为特定的C型,像这样:
pr = (unsigned char *)mxGetData(array_ptr);
pr
现在指向array_ptr
的unsigned char
数组的实部。
非常感谢,SCFrench! – Serg 2012-03-22 23:09:00