【问题标题】:how to read an integer array in MEX-function如何在 MEX 函数中读取整数数组
【发布时间】:2011-09-09 01:37:07
【问题描述】:

我正在将一个 uint8 类型的整数数组从 MATLAB 传递给一个 MEX 函数。如何读取这些值?我尝试使用:

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

但值显示为垃圾。我也试过了

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

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

解决办法是什么?

基本上我想在 MEX 函数中读取整数值,但 mxGetPr 返回双精度类型。

【问题讨论】:

    标签: matlab mex


    【解决方案1】:

    查看演示 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 的数组。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-28
        相关资源
        最近更新 更多