我正在使用Matlab处理大型数组中的大数据。我的程序运行正常,现在我已将其转换为C但是遇到最大阵列大小问题。
定义emxArray
时,定义如下:
struct emxArray_real_T
{
double *data;
int *size;
int allocatedSize;
int numDimensions;
boolean_T canFreeData;
};
这里的问题是变量size
是int
(甚至不是uint32
)因此我在C代码中可以拥有的最大数组大小是2 ^ 31。这是个问题。我正在处理数组大小超过1E9的数据。
有什么方法可以告诉Matlab使用long
或long long
或某些无符号数据类型来表示大小?我发现了以下页面,但我只是希望有一些方法可以解决这个问题,而不是说它不起作用:
https://www.mathworks.com/help/fixedpoint/ug/array-size-restrictions-for-code-generation.html
答案 0 :(得分:1)
你不能这样做,因为你链接的文档解释了。
所以我看到了一些解决方法:
Matlab在处理大数组时应该是高效的,所以使用Matlab,
将数组导出到文件,c中的句柄,从c导出并在Matlab中导回。 (或使用数据库和一些触发器)。
在调用C的函数上:拆分数组并以块的形式发送。