Matlab Coder数组大小限制

时间:2018-02-27 13:32:32

标签: c arrays matlab

我正在使用Matlab处理大型数组中的大数据。我的程序运行正常,现在我已将其转换为C但是遇到最大阵列大小问题。

定义emxArray时,定义如下:

struct emxArray_real_T
{
    double *data;
    int *size;
    int allocatedSize;
    int numDimensions;
    boolean_T canFreeData;
};

这里的问题是变量sizeint(甚至不是uint32)因此我在C代码中可以拥有的最大数组大小是2 ^ 31。这是个问题。我正在处理数组大小超过1E9的数据。

有什么方法可以告诉Matlab使用longlong long或某些无符号数据类型来表示大小?我发现了以下页面,但我只是希望有一些方法可以解决这个问题,而不是说它不起作用:

https://www.mathworks.com/help/fixedpoint/ug/array-size-restrictions-for-code-generation.html

1 个答案:

答案 0 :(得分:1)

你不能这样做,因为你链接的文档解释了。

所以我看到了一些解决方法:

  • Matlab在处理大数组时应该是高效的,所以使用Matlab,

  • 将数组导出到文件,c中的句柄,从c导出并在Matlab中导回。 (或使用数据库和一些触发器)。

  • 在调用C的函数上:拆分数组并以块的形式发送。