我想将一个整数数组从 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 函数中读取整数数组 https://stackoverflow.com/questions/6248592/how-to-read-an-integer-array-in-mex-function但我一直没能取得进步。
For 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]))
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)