如何将整数数组从matlab传递给mex?

时间:2015-10-29 23:02:22

标签: c matlab mex

我想将一个整数数组从matlab传递给mex。数组是例如a=[1 2 3 4].我写了以下代码:

#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <mkl.h>
#include "mkl_vml.h"
#include "mex.h"
#include "matrix.h"
#include "mkl_vsl.h"


/* main fucntion */
void mexFunction(int nlhs,  mxArray *plhs[], int nrhs, const mxArray *prhs[])
{

    int n, *a;

    /* make pointers to input data */
    n = (int)mxGetScalar(prhs[0]);
    a = (int *)mxGetData(prhs[1]);

    mexPrintf("a[0]:%d \t a[1]:%d \t a[2]:%d \n", a[0],a[1],a[2]);

}

当我运行它时,结果是:

a[0]:0   a[1]:1072693248     a[2]:0 

我已经看到了这个答案:using integer arrays on mex但我还不明白该怎么做。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

这里的表是在决定如何传递数据时使用的等效C和MATLAB数据类型。

enter image description here

Source

由于您在MEX文件中处理int *,因此您应该传递int32 MATLAB数据。但请注意,C中的int不保证是32位,但在现代系统中似乎是这样。