首页 文章

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

提问于
浏览
9

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

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

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

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

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

这是什么解决方案?

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

2 回答

  • 9

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

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

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

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

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

  • 1

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

    尝试包含 stdint.h 标头,并将 uint8_t 数据类型用于您读入的阵列 .

相关问题