如何在MEX函数中读取整数数组

Mad*_*dhu 10 matlab mex

我将一个uint8类型的整数数组从MATLAB传递给MEX函数.我如何阅读这些值?我试过用:

int *n;
n = (int * ) mxGetData(prhs[0]);
Run Code Online (Sandbox Code Playgroud)

但价值观就像垃圾一样.我也试过了

double *n;
n= mxGetPr(prhs[0]);
Run Code Online (Sandbox Code Playgroud)

在这种情况下,也会出现垃圾值.

这是什么解决方案?

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

SCF*_*nch 10

看看演示MEX-function explore.c,您可以在MATLAB中打开它

edit([matlabroot '/extern/examples/mex/explore.c']);
Run Code Online (Sandbox Code Playgroud)

在那里,你会发现一堆函数,其名称都以字母开头,analyze_然后是一个类型(例如analyze_uint8).在这些函数中,您将看到mxGetData要转换为特定C类型的调用的输出,如下所示:

pr = (unsigned char *)mxGetData(array_ptr);
Run Code Online (Sandbox Code Playgroud)

pr现在指向的实部array_ptr,数组unsigned char.


Ita*_*atz 1

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

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