2

我想将一个整数数组从 MATLAB 传递给 C。我尝试使用 uint64_T 类型,但它一直在崩溃。使用 mxGetPr() 获取双指针工作正常,但我需要将内容类型转换为整数,并且在每次迭代中这样做可能会很慢。

我在 mexFunction 中试过这个:

uint64_T *l;
l= (uint64_T *)mxGetData(prhs[1]);

调用此变量的函数具有以下形式:

void XAction( const double *v, const uint64_T *l, double *w)
{
for (j=c; j; j--)
    for (i=r-1; i; i--)
        w[i] =v[l[r*j +i]]
}

我在类型转换中犯了错误吗?

我已经看到了这个答案:如何在 MEX 函数中读取整数数组,但我一直无法取得进展。

4

1 回答 1

2

为了l= (uint64_T *)mxGetData(prhs[1]);正常工作,从 MATLAB 传递到您的 mex 的数据必须是 uint64 类型。确保您将 uint64 数组从 MATLAB 传递到您的 mex 文件。如果调用myMex([1 2 3])数组传递的不是整数。它是双重的。

您不能通过转换指针将 double 数组转换为 int 数组。要么你必须从 MATLAB 传递整数值,要么你必须创建一个新的 int 数组并通过单独转换每个值来填充它。要在 MATLAB 中将值转换为 uint64,您可以执行myMex(uint64([1 2 3]))

于 2013-05-29T00:31:50.100 回答