我将一个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.
您应该确保输入数据(来自 Matlab)和输出数组(您在 mex 函数中读入的数组)中读取的字节数以及这些字节的解释相同。由于uint8是 8 位长,因此double和int都会读取错误的字节数,并误解这些字节。
尝试包含stdint.h标头,并使用uint8_t您读入的数组的数据类型。
| 归档时间: |
|
| 查看次数: |
10859 次 |
| 最近记录: |