2011-06-06 85 views
8

我将MATLAB中uint8类型的整数数组传递给MEX函数。我如何阅读这些值?我试过使用:如何读取MEX函数中的整数数组

int *n; 
n = (int *) mxGetData(prhs[0]); 

但值出来的垃圾。我也试过

double *n; 
n= mxGetPr(prhs[0]); 

并且在这种情况下也出现垃圾值。

这是什么解决方案?

基本上我想读取MEX函数中的整数值,但mxGetPr返回double类型。

回答

1

您应该确保读取的字节数和这些字节的解释在输入数据(来自Matlab)和输出数组(在mex中读入的数组)相同功能)。由于uint8的长度是8位,因此doubleint都将读取错误的字节数,并误解了这些字节。

尝试包括stdint.h标头,并使用uint8_t数据类型作为读入的数组。

8

使用

edit([matlabroot '/extern/examples/mex/explore.c']); 

在那里看一看演示MEX-功能explore.c,您可以在MATLAB打开,你会发现一堆名字都开始analyze_,然后一个功能类型(例如,analyze_uint8)。在这些功能你会看到来电的输出mxGetData被强制转换为特定的C型,像这样:

pr = (unsigned char *)mxGetData(array_ptr); 

pr现在指向array_ptrunsigned char数组的实部。

+0

非常感谢,SCFrench! – Serg 2012-03-22 23:09:00